Compare commits

...

123 commits
v1.3.3 ... dev

Author SHA1 Message Date
Ben Claussen
7129e7d3c7 Update version to 1.8.5 2023-11-09 12:09:07 -05:00
Ben Claussen
bb43ac490c Update psproj 2023-11-09 12:08:30 -05:00
Ben Claussen
59a28faff5 Correct variable references in ShouldProcess 2023-11-09 12:04:05 -05:00
Ben Claussen
b441e02e2b Update New-NetboxContactAssignment Content_Type parameter values and validation 2023-11-09 12:03:21 -05:00
Ben Claussen
40c7aac059 Add Set-NetboxContactRole and Assignment functions 2023-11-09 12:01:50 -05:00
Ben Claussen
e4eb42a7a3 Update psproj 2023-11-09 11:21:44 -05:00
Ben Claussen
bf01b354bd Move Get-NetboxTag file 2023-11-09 11:20:31 -05:00
Ben Claussen
cceb8fe765 Update Get-NetboxAPIDefinition for new path
- Add $Format parameter for json or yaml
2023-11-09 11:07:43 -05:00
Ben Claussen
8326e3eb29 Update New-NetboxContactAssignment name 2023-11-09 11:06:35 -05:00
Ben Claussen
26cc2b3c0d Merge branch 'master' into dev 2023-11-07 10:33:24 -05:00
Ben Claussen
44dcb252b8
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 4f6625af2d.

* 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
Ben Claussen
88647882cc Update version to 1.8.4 2023-11-07 10:20:23 -05:00
Ben Claussen
2233de974d Remove incorrect parameter 2023-11-07 10:19:03 -05:00
Ben Claussen
9e00636fbe Add Set-NetboxIPAMAddressRange 2023-11-07 10:16:45 -05:00
Ben Claussen
bb0dfc0aa4 Update version to 1.8.3 2023-11-07 09:59:39 -05:00
Ben Claussen
4897d6b71f Remove whitespaces 2023-11-07 09:57:42 -05:00
Ben Claussen
6c2d358171 Update psproj with IPAMAddressRange files 2023-11-07 09:38:42 -05:00
Ben Claussen
383ca2b002 Move limit/offset parameters to end of list 2023-11-07 09:38:19 -05:00
Ben Claussen
985f920900 Add IPAMAddressRange functions 2023-11-07 09:37:47 -05:00
Ben Claussen
a63478a8d6 [uint64] updates 2023-11-07 09:37:01 -05:00
Ben Claussen
080d655f8d More uint64 updates for #49 2023-07-28 16:17:23 -04:00
Ben Claussen
914b245f24 dev v1.8.1 2023-07-28 15:59:13 -04:00
Ben Claussen
58fbbeb0cd Update uint16 to uint64 where applicable for #49 2023-07-28 15:38:16 -04:00
Ben Claussen
46068dcc04 Update psproj 2023-07-28 15:12:48 -04:00
Ben Claussen
5b0c2897e0 Merge branch 'master' into dev 2023-07-28 15:04:06 -04:00
Ben Claussen
ec5f9e810f
v1.8.0 (#45)
* 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 4f6625af2d.

* 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

---------

Co-authored-by: SheffSix <jbeck1867@gmail.com>
Co-authored-by: Ben Claussen <benclaussen@gmail.com>
Co-authored-by: James Beck <jim@beck81.co.uk>
2023-03-17 16:04:52 -04:00
Ben Claussen
c2a3dc285b Update version 1.8.0 2023-03-17 16:00:24 -04:00
Ben Claussen
bea65f0b06 Update vscode settings 2023-03-17 15:49:01 -04:00
Ben Claussen
cf1bcb3691 Update Postman for Netbox v3.4.5 2023-03-17 15:42:59 -04:00
Ben Claussen
0049ba4985 Fix braces 2023-03-17 15:37:09 -04:00
Ben Claussen
7c03023bb8 Update psproj 2023-03-17 15:35:27 -04:00
Ben Claussen
0fd989c82a Merge branch 'dev' of https://github.com/benclaussen/NetboxPS into dev 2023-03-17 15:29:29 -04:00
James Beck
d441a1ddac
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 4f6625af2d.

* 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.
2023-03-17 15:27:55 -04:00
Ben Claussen
7caf1a1d93 Merge branch 'master' of https://github.com/benclaussen/NetboxPS into dev 2023-03-13 09:57:58 -04:00
Ben Claussen
29dd7ac038
v1.7.3 (#43)
* Fixing Interface Type parameter (#42) @SheffSix 

* 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`

---------

Co-authored-by: SheffSix <jbeck1867@gmail.com>
Co-authored-by: Ben Claussen <benclaussen@gmail.com>
2023-03-13 09:53:15 -04:00
Ben Claussen
eb4d0eeb3b Fix location of whitespace cleanup in deploy.ps1 2023-03-13 09:49:31 -04:00
Ben Claussen
6f4309aa04 Increase version to 1.7.3 2023-03-13 09:42:30 -04:00
Ben Claussen
5421febdd1 Update deploy.ps1 to remove trailing whitespaces from psd1 2023-03-13 09:42:08 -04:00
SheffSix
a4c1886a23
Fixing Interface Type parameter (#42)
* Fixing #41
2023-03-13 09:26:25 -04:00
Ben Claussen
441b06eb04 Update version to 1.7.2 2023-03-10 14:42:39 -05:00
Ben Claussen
5d6fb23e91 Add Invoke-PSScriptAnalyzer call to remove whitespace from files 2023-03-10 14:39:29 -05:00
Ben Claussen
e2a5157790 Remove whitespace 2023-03-10 14:37:49 -05:00
Ben Claussen
27209d6917 Remove references to ValidateDCIMChoice for #40 2023-03-10 14:37:35 -05:00
Ben Claussen
6965f61e6e Add Test-NetboxAPIConnected 2023-03-10 12:20:14 -05:00
Ben Claussen
ddf0a081b4 Remove whitespace 2023-02-24 15:14:04 -05:00
Ben Claussen
d09e20baee Fix conflicts for #38 2023-02-24 13:26:38 -05:00
Ben Claussen
7925db838f Increment version to 1.7.1 2023-02-24 12:13:24 -05:00
Ben Claussen
3e0d817267 Fix order of operations for Connect-NetboxAPI
- Move successful connection boolean declaration before call to Get-NetboxContentType
2023-02-24 12:12:54 -05:00
Ben Claussen
010fb0410b Increment version to 1.7.0 2023-02-24 11:51:04 -05:00
Ben Claussen
44dc6c86a2 Update deploy.ps1 2023-02-24 11:46:06 -05:00
Ben Claussen
5b7f0c658b Merge branch 'contact_functions' into dev 2023-02-24 11:42:39 -05:00
Ben Claussen
5333d10ce0 Merge commit '356bd71ac852c3ab0ecf945e5322a0d5157ed7a8' into dev 2023-02-24 11:41:53 -05:00
Ben Claussen
f289854ddf Merge branch 'dev' of https://github.com/benclaussen/NetboxPS into dev 2023-02-24 11:39:57 -05:00
Ben Claussen
1fed2d27e6 Fix #28
- Set DefaultParameterSetName = Query
2023-02-24 10:28:16 -05:00
Ben Claussen
c1a0675b02 Update psproj 2023-02-24 10:23:27 -05:00
Ben Claussen
6654f798b0 Add Set-NetboxContact 2023-02-24 10:23:10 -05:00
Ben Claussen
aa444871a4 Update psproj 2023-02-16 15:05:28 -05:00
Ben Claussen
1f3626f319 Update test version to 1.6.0 2023-02-16 09:49:13 -05:00
Ben Claussen
356bd71ac8 Remove invalid logic from deploy.ps1 2023-02-16 09:48:35 -05:00
Ben Claussen
f5c94b206f Update psproj 2023-02-16 09:48:06 -05:00
Ben Claussen
35916a5ab7 Add New-NetboxContactAssignment 2023-02-16 09:47:00 -05:00
Ben Claussen
c47d787447 Add Get-NetboxContactAssignment 2023-02-16 09:46:27 -05:00
Ben Claussen
1ec38d3da2 Add call to Get-NetboxContentType in Connect-NetboxAPI and NetboxConfigVariable storage 2023-02-16 09:45:51 -05:00
Ben Claussen
4a0bd1d2d0 Add Get-NetboxContentType 2023-02-16 09:44:29 -05:00
Ben Claussen
8b8ca091b1 Update psproj 2023-02-15 15:50:05 -05:00
Ben Claussen
b720c03851 Add New-NetboxTenant function 2023-02-15 15:49:49 -05:00
Ben Claussen
c0e18ec134 Move Get-NetboxTenant file to Tenancy/Tenants folder 2023-02-15 15:49:29 -05:00
Ben Claussen
049745554e Update psproj 2023-02-15 15:43:12 -05:00
Ben Claussen
c91d5fd32c Add New-NetboxContactRole function 2023-02-15 15:42:37 -05:00
Ben Claussen
458a4ae7c2 Add New-NetboxContact function 2023-02-15 15:42:09 -05:00
Ben Claussen
6dd82ee688 Add Get-NetboxContactRole function 2023-02-15 15:40:59 -05:00
Ben Claussen
d85f675469 Add Get-NetboxContact function 2023-02-15 15:39:36 -05:00
Alexis La Goutte
d7c008871d
Tests (integration) DCIM (#34)
* Tests: Add Initial support of Integration (using Pester v5)

* Site: Add Tests for New/Get/Remove (DCIM) Site
2022-12-06 13:49:35 -05:00
weidi
ea75e796ef
Add Basic usage in README.md (#30) 2022-12-06 13:48:46 -05:00
Claussen
6b8caf0bd7 1.5.6 - production function exports 2022-12-06 13:36:44 -05:00
Claussen
e7a67328bf 1.5.5 2022-12-06 13:35:56 -05:00
Claussen
ff0c0127cd Add explicit FunctionsToExport 2022-12-06 13:35:47 -05:00
Claussen
c3621f237e Remove unnecessary file headers 2022-12-06 13:34:52 -05:00
Ben Claussen
cad361c1b4 Update deploy.ps1 with new logic 2022-12-01 09:46:13 -05:00
Ben Claussen
cd0d6383e6 Update parent parameter type to string 2022-11-29 11:28:11 -05:00
Ben Claussen
7aedcf8338 Add Site parameter and validation logic 2022-11-28 15:45:19 -05:00
Alexis La Goutte
cb4e2f2f57
Merge pull request #35 from alagoutte/fix-pssa
Clear-NetboxCredential: Fix PSSA (trailing whitespace)
2022-07-06 21:48:15 +02:00
Alexis La Goutte
e29299022e Clear-NetboxCredential: Fix PSSA (trailing whitespace) 2022-06-29 07:59:13 +02:00
Ben Claussen
9dd6bc2b0e Remove old ThrowNetboxRESTError function 2021-09-10 12:44:48 -04:00
Ben Claussen
3e03e1e3ad Add Clear-NetboxCredential
- Grants ability to clear the stored credentials in `$Netboxconfig` variable
2021-09-10 12:43:34 -04:00
Alexis La Goutte
7edbae953f
Tests: Fix PSSA (#27)
* Tests: fix indent/align (with Visual Formatter Code)

* Tests: Suppress warning about use ConvertToSecureString...

* Setup(Tests): fix PSSA about unused variable
2021-09-10 11:38:00 -04:00
Alexis La Goutte
a608d6ebd7
Fix PSSA deploy(.ps1) warning (#26)
* Deploy: fix indent (remove trailing whitespace)

* Deploy(.ps1): Remove PSSA warning about don't use Write-host

* Deploy(.ps1): Remove PSSA warning unused variable

false positive (it is used for ParameterSet...)
2021-09-10 11:35:49 -04:00
Alexis La Goutte
e8a5fdf15d
Enhance (DCIM) Site (#25)
* Site(DCIM): Fix Get without parameter

* Site(DCIM): Fix indent (use 4 spaces for header)

* Site(DCIM): Add New-NetboxDCIMSite for Add DCIM Site

* Site(DCIM): Add Remove-NetboxDCIMSite for Remove DCIM Site
2021-09-10 11:34:37 -04:00
Alexis La Goutte
e162c05900
Fix Publish on PSGallery (with PS Core) (#24)
* Connect: Add System.Web to Type (Assembly) for PS 5.0

* NetboxPS(.psd1): Remove Required Assemblies (System.web) requirement
2021-09-10 11:31:15 -04:00
Ben Claussen
26c7ccfdd0
v1.5.0 (#22)
* Connect(Setup): Fix indent (using Visual code Formatter)

* Setup(Functions): Fix indent (using Visual Code Formatter)

* Support(Setup): Fix indent (using Visual Code Formatter)

* InvokeNetboxRequest(Helpers): Fix indent (using Visual Code Formatter)

* Add Set-netboxCipherSSL for enable TLS1.1 and TLS1.2 (for PS 5.0)

From PowerAruba/FortiPower Module :)

* Add Set-NetboxUnstrustedSSL for disable SSL chain test (for PS 5.0

From PowerAruba/FortiPwoer Module :)

* Add Get/Set netboxInvokeParms for Get and Set Invoke Params (array)

Like -SkipCertificate, Timeout...

* InvokeNetboxRequest: Add to Splat NetboxInvokeParams

* Connect: Add SkipCertificateCheck parameter (for PS5 and Core)

Also enable TLS 1.1 and 1.2 for PS5

* PSSA: Add Github Actions for launch PSSA (PowerShell Script Analyzer) when launch PR (#11)

Add also vscode/PSScriptAnalyzerSettings.psd1 for Settings for PSSA (can be reuse also for vscode...)

* Update psproj

* Correct typo

* Correct brace formatting

* Add Get/Set timeout functions

* Add Get/Set timeout functions

* Add TimeoutSeconds parameter and logic to Connect-NetboxAPI
- Updated `InvokeNetboxRequest` to use `NetboxConfig.Timeout`
- Updated `Get-NetboxAPIDefinition` to use `NetboxConfig.Timeout`

* Trim whitespaces

* Add Get-NetboxVersion function

* Remove API Definition caching and replace with Netbox version check

* Increment version to 1.4

* Fix Typo and Enhance AvailableIP Example (#18)

* AvailableIP(IPAM/Address): Fix typo

* AvailableIP(IAPM/Address): Enhance Example

* NetboxPS(.psm1): Fix typo (paramters => parameters

* Update deployment files

* Add Assigned Object (Type and ID) to New IPAM Address (#19)

* IPAMAddress(New): Remove tab (use 4 spaces)

* IPAMAddress(New): Remove not longer needed code about value validation

* IPAMAddress(New): Add Assigned Object Type and ID

Fix #17

* IPAMAddress(New): add Parameter example

* IPAMAddress(New): Add Validate for Assigned Object Type

Can be only dcim.interface or virtualization.vminterface

* IPAMAddress(New): Fix Example (it is New and not Create Verb !)

* IPAMAddress(New): Remove -Force parameter, use -Confirm if you want a confirmation

it is the standard with ShouldProcess

* Fix PSSA Warning (#20)

* Fix trailing white space

using Invoke-ScriptAnalyzer -Fix -Path . -Recurse

* add settings.json for configure Visual Code (Formatter)

* PSSA: Fix Command accepts pipeline input but has not defined a process block

* PSSA: Fix PSUseDeclaredVarsMoreThanAssignments

The variable 'I_B' is assigned but never used
The variable 'I_A' is assigned but never used

* PSSA: Fix PSUseShouldProcessForStateChangingFunctions

Function New-/Set-... has verb that could change system state. Therefore, the function has to support 'ShouldProcess'

* Add release.(yml) Github Actions (#21)

It will push on PSGallery module when release a new version !

* Update deploy.ps1 docs

* Update readme

* Remove unused files

* Increment version to 1.5.0

Co-authored-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Co-authored-by: Ben Claussen <claussen@neonet.org>
2021-07-23 16:24:34 -04:00
Ben Claussen
c8e0a96690
Merge branch 'master' into dev 2021-07-23 16:22:19 -04:00
Ben Claussen
30ae377493 Increment version to 1.5.0 2021-07-23 16:19:03 -04:00
Ben Claussen
c11680a20e Remove unused files 2021-07-23 16:16:13 -04:00
Ben Claussen
f9fc02756c Update readme 2021-07-23 16:15:46 -04:00
Ben Claussen
48452ce686 Update deploy.ps1 docs 2021-07-23 16:15:34 -04:00
Alexis La Goutte
42b00279cb
Add release.(yml) Github Actions (#21)
It will push on PSGallery module when release a new version !
2021-07-23 16:12:46 -04:00
Alexis La Goutte
8167b0dbf0
Fix PSSA Warning (#20)
* Fix trailing white space

using Invoke-ScriptAnalyzer -Fix -Path . -Recurse

* add settings.json for configure Visual Code (Formatter)

* PSSA: Fix Command accepts pipeline input but has not defined a process block

* PSSA: Fix PSUseDeclaredVarsMoreThanAssignments

The variable 'I_B' is assigned but never used
The variable 'I_A' is assigned but never used

* PSSA: Fix PSUseShouldProcessForStateChangingFunctions

Function New-/Set-... has verb that could change system state. Therefore, the function has to support 'ShouldProcess'
2021-07-23 16:06:42 -04:00
Alexis La Goutte
ddf1d22e18
Add Assigned Object (Type and ID) to New IPAM Address (#19)
* IPAMAddress(New): Remove tab (use 4 spaces)

* IPAMAddress(New): Remove not longer needed code about value validation

* IPAMAddress(New): Add Assigned Object Type and ID

Fix #17

* IPAMAddress(New): add Parameter example

* IPAMAddress(New): Add Validate for Assigned Object Type

Can be only dcim.interface or virtualization.vminterface

* IPAMAddress(New): Fix Example (it is New and not Create Verb !)

* IPAMAddress(New): Remove -Force parameter, use -Confirm if you want a confirmation

it is the standard with ShouldProcess
2021-07-23 16:03:07 -04:00
Ben Claussen
11ae767a6c Update deployment files 2021-07-23 10:26:14 -04:00
Alexis La Goutte
01335bd225
Fix Typo and Enhance AvailableIP Example (#18)
* AvailableIP(IPAM/Address): Fix typo

* AvailableIP(IAPM/Address): Enhance Example

* NetboxPS(.psm1): Fix typo (paramters => parameters
2021-07-23 10:24:27 -04:00
Ben Claussen
739f5e98e2
Version 1.4 (#14)
* Connect(Setup): Fix indent (using Visual code Formatter)

* Setup(Functions): Fix indent (using Visual Code Formatter)

* Support(Setup): Fix indent (using Visual Code Formatter)

* InvokeNetboxRequest(Helpers): Fix indent (using Visual Code Formatter)

* Add Set-netboxCipherSSL for enable TLS1.1 and TLS1.2 (for PS 5.0)

From PowerAruba/FortiPower Module :)

* Add Set-NetboxUnstrustedSSL for disable SSL chain test (for PS 5.0

From PowerAruba/FortiPwoer Module :)

* Add Get/Set netboxInvokeParms for Get and Set Invoke Params (array)

Like -SkipCertificate, Timeout...

* InvokeNetboxRequest: Add to Splat NetboxInvokeParams

* Connect: Add SkipCertificateCheck parameter (for PS5 and Core)

Also enable TLS 1.1 and 1.2 for PS5

* PSSA: Add Github Actions for launch PSSA (PowerShell Script Analyzer) when launch PR (#11)

Add also vscode/PSScriptAnalyzerSettings.psd1 for Settings for PSSA (can be reuse also for vscode...)

* Update psproj

* Correct typo

* Correct brace formatting

* Add Get/Set timeout functions

* Add Get/Set timeout functions

* Add TimeoutSeconds parameter and logic to Connect-NetboxAPI
- Updated `InvokeNetboxRequest` to use `NetboxConfig.Timeout`
- Updated `Get-NetboxAPIDefinition` to use `NetboxConfig.Timeout`

* Trim whitespaces

* Add Get-NetboxVersion function

* Remove API Definition caching and replace with Netbox version check

* Increment version to 1.4

Co-authored-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Co-authored-by: Ben Claussen <claussen@neonet.org>
2021-07-22 12:00:12 -04:00
Ben Claussen
2b7c1b4be3 Increment version to 1.4 2021-07-22 11:53:58 -04:00
Ben Claussen
68161a78b0 Remove API Definition caching and replace with Netbox version check 2021-07-22 11:52:57 -04:00
Ben Claussen
17c4d9d779 Add Get-NetboxVersion function 2021-07-22 11:52:08 -04:00
Ben Claussen
ea9f6c41bc Trim whitespaces 2021-07-22 11:39:39 -04:00
Ben Claussen
22607fde48 Add TimeoutSeconds parameter and logic to Connect-NetboxAPI
- Updated `InvokeNetboxRequest` to use `NetboxConfig.Timeout`
- Updated `Get-NetboxAPIDefinition` to use `NetboxConfig.Timeout`
2021-07-22 11:06:13 -04:00
Ben Claussen
802ab317f6 Merge branch 'dev' of github.com:benclaussen/NetboxPS into dev 2021-07-22 10:49:39 -04:00
Ben Claussen
218114d8fe Add Get/Set timeout functions 2021-07-22 10:49:19 -04:00
Ben Claussen
c48bfe78ad Add Get/Set timeout functions 2021-07-22 10:48:41 -04:00
Ben Claussen
06d758d7b3 Correct brace formatting 2021-07-22 10:28:22 -04:00
Ben Claussen
989c5eaac2 Correct typo 2021-07-22 10:27:58 -04:00
Ben Claussen
6122fd2301 Update psproj 2021-07-22 10:22:19 -04:00
Ben Claussen
1f66348205
Merge pull request #12 from alagoutte/enhance-connect
Enhance Connection (Support -SkipCertificateCheck, Cipher options)
Indentation fixes

Fixes #8
2021-07-22 10:16:00 -04:00
Alexis La Goutte
fcbb25c088
PSSA: Add Github Actions for launch PSSA (PowerShell Script Analyzer) when launch PR (#11)
Add also vscode/PSScriptAnalyzerSettings.psd1 for Settings for PSSA (can be reuse also for vscode...)
2021-07-22 09:23:15 -04:00
Alexis La Goutte
4800cc6564 Connect: Add SkipCertificateCheck parameter (for PS5 and Core)
Also enable TLS 1.1 and 1.2 for PS5
2021-07-21 23:08:11 +02:00
Alexis La Goutte
1a2484db2c InvokeNetboxRequest: Add to Splat NetboxInvokeParams 2021-07-21 23:06:17 +02:00
Alexis La Goutte
254a2798ac Add Get/Set netboxInvokeParms for Get and Set Invoke Params (array)
Like -SkipCertificate, Timeout...
2021-07-21 23:06:17 +02:00
Alexis La Goutte
c8233ab572 Add Set-NetboxUnstrustedSSL for disable SSL chain test (for PS 5.0
From PowerAruba/FortiPwoer Module :)
2021-07-21 23:06:17 +02:00
Alexis La Goutte
c8c6d48ee4 Add Set-netboxCipherSSL for enable TLS1.1 and TLS1.2 (for PS 5.0)
From PowerAruba/FortiPower Module :)
2021-07-21 23:06:17 +02:00
Alexis La Goutte
2bf4ed6f6f InvokeNetboxRequest(Helpers): Fix indent (using Visual Code Formatter) 2021-07-21 23:06:17 +02:00
Alexis La Goutte
4ad0562466 Support(Setup): Fix indent (using Visual Code Formatter) 2021-07-21 23:06:17 +02:00
Alexis La Goutte
5b1ee45769 Setup(Functions): Fix indent (using Visual Code Formatter) 2021-07-21 23:06:17 +02:00
Alexis La Goutte
b164ffe0b4 Connect(Setup): Fix indent (using Visual code Formatter) 2021-07-21 23:06:17 +02:00
125 changed files with 72641 additions and 5968 deletions

16
.github/workflows/pssa.yml vendored Normal file
View file

@ -0,0 +1,16 @@
name: CI
on: [pull_request]
jobs:
lint:
name: Run PSSA
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: lint
uses: docker://devblackops/github-action-psscriptanalyzer:2.3.0
with:
settingsPath: .vscode/PSScriptAnalyzerSettings.psd1
sendComment: false
failOnInfos: true
failOnErrors: true
failOnWarnings: true

16
.github/workflows/release.yml vendored Normal file
View file

@ -0,0 +1,16 @@
name: Release
on:
release:
types: [published]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Publish
run: |
pwsh -Command "Publish-Module -Path ./NetboxPS -NuGetApiKey ${{ secrets.PSGALLERY_API_KEY }}"

5
.vscode/PSScriptAnalyzerSettings.psd1 vendored Normal file
View file

@ -0,0 +1,5 @@
@{
ExcludeRules = @(
'PSUseToExportFieldsInManifest'
)
}

22
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,22 @@
// Place your settings in this file to overwrite default and user settings.
{
"editor.formatOnSave": true,
"files.trimTrailingWhitespace": true,
"powershell.scriptAnalysis.settingsPath": ".vscode/PSScriptAnalyzerSettings.psd1",
"powershell.codeFormatting.newLineAfterCloseBrace": false,
"powershell.codeFormatting.useCorrectCasing": true,
"powershell.codeFormatting.preset": "OTBS",
"powershell.codeFormatting.addWhitespaceAroundPipe": true,
"powershell.codeFormatting.autoCorrectAliases": true,
"powershell.codeFormatting.newLineAfterCloseBrace": true,
"powershell.codeFormatting.newLineAfterOpenBrace": true,
"powershell.codeFormatting.openBraceOnSameLine": true,
"powershell.codeFormatting.whitespaceAfterSeparator": true,
"powershell.codeFormatting.whitespaceAroundOperator": true,
"powershell.codeFormatting.whitespaceBeforeOpenBrace": true,
"powershell.codeFormatting.whitespaceBeforeOpenParen": true,
"powershell.codeFormatting.trimWhitespaceAroundPipe": true,
"[markdown]": {
"files.trimTrailingWhitespace": false,
}
}

View file

@ -1,14 +0,0 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2018 v5.5.148
Created on: 2/28/2018 4:06 PM
Created by: Ben Claussen
Organization: NEOnet
Filename: Circuits.ps1
===========================================================================
.DESCRIPTION
Circuit object functions
#>

View file

@ -1,19 +1,6 @@
<#
.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
@ -36,16 +23,16 @@ function Get-NetboxCircuit {
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
The name or ID of the provider. Provide either [string] or [uint64]. 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
Type of circuit. Provide either [string] or [uint64]. 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
Location/site of circuit. Provide either [string] or [uint64]. 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
Tenant assigned to circuit. Provide either [string] or [uint64]. String will search tenant names, integer will search database IDs
.PARAMETER Limit
A description of the Limit parameter.
@ -70,7 +57,7 @@ function Get-NetboxCircuit {
param
(
[Parameter(ParameterSetName = 'ById')]
[uint16[]]$Id,
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$CID,
@ -79,7 +66,7 @@ function Get-NetboxCircuit {
[datetime]$InstallDate,
[Parameter(ParameterSetName = 'Query')]
[uint32]$CommitRate,
[uint64]$CommitRate,
[Parameter(ParameterSetName = 'Query')]
[string]$Query,
@ -105,27 +92,29 @@ function Get-NetboxCircuit {
[switch]$Raw
)
switch ($PSCmdlet.ParameterSetName) {
'ById' {
foreach ($i in $ID) {
$Segments = [System.Collections.ArrayList]::new(@('circuits', 'circuits', $i))
process {
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"
$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
}
}
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
}
}
}

View file

@ -1,40 +1,26 @@
<#
.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)]
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
ValueFromPipelineByPropertyName = $true)]
[string]$CID,
[Parameter(Mandatory = $true)]
[uint32]$Provider,
[uint64]$Provider,
[Parameter(Mandatory = $true)]
[uint32]$Type,
[uint64]$Type,
#[ValidateSet('Active', 'Planned', 'Provisioning', 'Offline', 'Deprovisioning', 'Decommissioned ')]
[uint16]$Status = 'Active',
[string]$Description,
[uint32]$Tenant,
[uint64]$Tenant,
[string]$Termination_A,
@ -43,7 +29,7 @@ function New-NetboxCircuit {
[string]$Termination_Z,
[ValidateRange(0, 2147483647)]
[uint32]$Commit_Rate,
[uint64]$Commit_Rate,
[string]$Comments,
@ -54,14 +40,16 @@ function New-NetboxCircuit {
[switch]$Raw
)
$Segments = [System.Collections.ArrayList]::new(@('circuits', 'circuits'))
$Method = 'POST'
process {
$Segments = [System.Collections.ArrayList]::new(@('circuits', 'circuits'))
$Method = 'POST'
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments
$URI = BuildNewURI -Segments $URIComponents.Segments
if ($Force -or $PSCmdlet.ShouldProcess($CID, 'Create new circuit')) {
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
if ($Force -or $PSCmdlet.ShouldProcess($CID, 'Create new circuit')) {
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
}
}
}

View file

@ -1,25 +1,11 @@
<#
.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,
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query',
Mandatory = $false)]

View file

@ -1,25 +1,11 @@
<#
.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,
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Circuit_ID,
@ -28,7 +14,7 @@ function Get-NetboxCircuitTermination {
[string]$Term_Side,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Port_Speed,
[uint64]$Port_Speed,
[Parameter(ParameterSetName = 'Query')]
[string]$Query,

View file

@ -1,24 +1,10 @@
<#
.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,
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Name,

View file

@ -0,0 +1,35 @@
function Get-NetboxDCIMCableTermination {
[CmdletBinding()]
#region Parameters
param
(
[uint16]$Limit,
[uint16]$Offset,
[Parameter(ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[uint64]$Cable,
[string]$Cable_End,
[string]$Termination_Type,
[uint64]$Termination_ID,
[switch]$Raw
)
#endregion Parameters
process {
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'cable-terminations'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Raw'
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $URI -Raw:$Raw
}
}

View file

@ -0,0 +1,55 @@
function Get-NetboxDCIMCable {
[CmdletBinding()]
#region Parameters
param
(
[uint16]$Limit,
[uint16]$Offset,
[Parameter(ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[string]$Label,
[string]$Termination_A_Type,
[uint64]$Termination_A_ID,
[string]$Termination_B_Type,
[uint64]$Termination_B_ID,
[string]$Type,
[string]$Status,
[string]$Color,
[uint64]$Device_ID,
[string]$Device,
[uint64]$Rack_Id,
[string]$Rack,
[uint64]$Location_ID,
[string]$Location,
[switch]$Raw
)
#endregion Parameters
process {
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'cables'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Raw'
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $URI -Raw:$Raw
}
}

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:06
Created by: Claussen
Organization: NEOnet
Filename: Get-NetboxDCIMDevice.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxDCIMDevice {
[CmdletBinding()]
#region Parameters
@ -22,43 +9,43 @@ function Get-NetboxDCIMDevice {
[uint16]$Offset,
[Parameter(ValueFromPipelineByPropertyName = $true)]
[uint16[]]$Id,
[uint64[]]$Id,
[string]$Query,
[string]$Name,
[uint16]$Manufacturer_Id,
[uint64]$Manufacturer_Id,
[string]$Manufacturer,
[uint16]$Device_Type_Id,
[uint64]$Device_Type_Id,
[uint16]$Role_Id,
[uint64]$Role_Id,
[string]$Role,
[uint16]$Tenant_Id,
[uint64]$Tenant_Id,
[string]$Tenant,
[uint16]$Platform_Id,
[uint64]$Platform_Id,
[string]$Platform,
[string]$Asset_Tag,
[uint16]$Site_Id,
[uint64]$Site_Id,
[string]$Site,
[uint16]$Rack_Group_Id,
[uint64]$Rack_Group_Id,
[uint16]$Rack_Id,
[uint64]$Rack_Id,
[uint16]$Cluster_Id,
[uint64]$Cluster_Id,
[uint16]$Model,
[uint64]$Model,
[object]$Status,
@ -74,7 +61,7 @@ function Get-NetboxDCIMDevice {
[bool]$Has_Primary_IP,
[uint16]$Virtual_Chassis_Id,
[uint64]$Virtual_Chassis_Id,
[uint16]$Position,
@ -85,15 +72,13 @@ function Get-NetboxDCIMDevice {
#endregion Parameters
if ($null -ne $Status) {
$PSBoundParameters.Status = ValidateDCIMChoice -ProvidedValue $Status -DeviceStatus
process {
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'devices'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Raw'
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $URI -Raw:$Raw
}
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'devices'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Raw'
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $URI -Raw:$Raw
}

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:07
Created by: Claussen
Organization: NEOnet
Filename: Get-NetboxDCIMDeviceRole.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxDCIMDeviceRole {
[CmdletBinding()]
param
@ -21,7 +8,7 @@ function Get-NetboxDCIMDeviceRole {
[uint16]$Offset,
[Parameter(ParameterSetName = 'ById')]
[uint16[]]$Id,
[uint64[]]$Id,
[string]$Name,

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:07
Created by: Claussen
Organization: NEOnet
Filename: Get-NetboxDCIMDeviceType.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxDCIMDeviceType {
[CmdletBinding()]
#region Parameters
@ -21,7 +8,7 @@ function Get-NetboxDCIMDeviceType {
[uint16]$Limit,
[uint16[]]$Id,
[uint64[]]$Id,
[string]$Query,
@ -29,7 +16,7 @@ function Get-NetboxDCIMDeviceType {
[string]$Manufacturer,
[uint16]$Manufacturer_Id,
[uint64]$Manufacturer_Id,
[string]$Model,

View file

@ -1,19 +1,7 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:08
Created by: Claussen
Organization: NEOnet
Filename: New-NetboxDCIMDevice.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function New-NetboxDCIMDevice {
[CmdletBinding()]
[CmdletBinding(ConfirmImpact = 'low',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
#region Parameters
param
@ -28,17 +16,17 @@ function New-NetboxDCIMDevice {
[object]$Device_Type,
[Parameter(Mandatory = $true)]
[uint16]$Site,
[uint64]$Site,
[object]$Status = 'Active',
[uint16]$Platform,
[uint64]$Platform,
[uint16]$Tenant,
[uint64]$Tenant,
[uint16]$Cluster,
[uint64]$Cluster,
[uint16]$Rack,
[uint64]$Rack,
[uint16]$Position,
@ -48,15 +36,15 @@ function New-NetboxDCIMDevice {
[string]$Asset_Tag,
[uint16]$Virtual_Chassis,
[uint64]$Virtual_Chassis,
[uint16]$VC_Priority,
[uint64]$VC_Priority,
[uint16]$VC_Position,
[uint64]$VC_Position,
[uint16]$Primary_IP4,
[uint64]$Primary_IP4,
[uint16]$Primary_IP6,
[uint64]$Primary_IP6,
[string]$Comments,
@ -64,27 +52,13 @@ function New-NetboxDCIMDevice {
)
#endregion Parameters
# if ($null -ne $Device_Role) {
# # Validate device role?
# }
#
# if ($null -ne $Device_Type) {
# # Validate device type?
# }
#
# if ($null -ne $Status) {
# $PSBoundParameters.Status = ValidateDCIMChoice -ProvidedValue $Status -DeviceStatus
# }
#
# if ($null -ne $Face) {
# $PSBoundParameters.Face = ValidateDCIMChoice -ProvidedValue $Face -DeviceFace
# }
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'devices'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method POST
if ($PSCmdlet.ShouldProcess($Name, 'Create new Device')) {
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method POST
}
}

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:08
Created by: Claussen
Organization: NEOnet
Filename: Remove-NetboxDCIMDevice.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Remove-NetboxDCIMDevice {
<#
.SYNOPSIS
@ -39,7 +26,7 @@ function Remove-NetboxDCIMDevice {
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint16[]]$Id,
[uint64[]]$Id,
[switch]$Force
)

View file

@ -1,24 +1,11 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:08
Created by: Claussen
Organization: NEOnet
Filename: Set-NetboxDCIMDevice.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Set-NetboxDCIMDevice {
[CmdletBinding(SupportsShouldProcess = $true)]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint16[]]$Id,
[uint64[]]$Id,
[string]$Name,
@ -26,17 +13,17 @@ function Set-NetboxDCIMDevice {
[object]$Device_Type,
[uint16]$Site,
[uint64]$Site,
[object]$Status,
[uint16]$Platform,
[uint64]$Platform,
[uint16]$Tenant,
[uint64]$Tenant,
[uint16]$Cluster,
[uint64]$Cluster,
[uint16]$Rack,
[uint64]$Rack,
[uint16]$Position,
@ -46,15 +33,15 @@ function Set-NetboxDCIMDevice {
[string]$Asset_Tag,
[uint16]$Virtual_Chassis,
[uint64]$Virtual_Chassis,
[uint16]$VC_Priority,
[uint64]$VC_Priority,
[uint16]$VC_Position,
[uint64]$VC_Position,
[uint16]$Primary_IP4,
[uint64]$Primary_IP4,
[uint16]$Primary_IP6,
[uint64]$Primary_IP6,
[string]$Comments,
@ -64,13 +51,7 @@ function Set-NetboxDCIMDevice {
)
begin {
# if ($null -ne $Status) {
# $PSBoundParameters.Status = ValidateDCIMChoice -ProvidedValue $Status -DeviceStatus
# }
#
# if ($null -ne $Face) {
# $PSBoundParameters.Face = ValidateDCIMChoice -ProvidedValue $Face -DeviceFace
# }
}
process {

View file

@ -0,0 +1,42 @@
function Add-NetboxDCIMFrontPort {
[CmdletBinding()]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true)]
[uint64]$Device,
[uint64]$Module,
[Parameter(Mandatory = $true)]
[string]$Name,
[string]$Label,
[Parameter(Mandatory = $true)]
[string]$Type,
[ValidatePattern('^[0-9a-f]{6}$')]
[string]$Color,
[Parameter(Mandatory = $true)]
[uint64]$Rear_Port,
[uint64]$Rear_Port_Position,
[string]$Description,
[bool]$Mark_Connected,
[uint16[]]$Tags
)
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'front-ports'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method POST
}

View file

@ -0,0 +1,34 @@
function Get-NetboxDCIMFrontPort {
[CmdletBinding()]
[OutputType([pscustomobject])]
param
(
[uint16]$Limit,
[uint16]$Offset,
[Parameter(ValueFromPipelineByPropertyName = $true)]
[uint64]$Id,
[string]$Name,
[string]$Device,
[uint64]$Device_Id,
[string]$Type,
[switch]$Raw
)
process {
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'front-ports'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $URI -Raw:$Raw
}
}

View file

@ -0,0 +1,35 @@
function Remove-NetboxDCIMFrontPort {
[CmdletBinding(ConfirmImpact = 'High',
SupportsShouldProcess = $true)]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[switch]$Force
)
begin {
}
process {
foreach ($FrontPortID in $Id) {
$CurrentPort = Get-NetboxDCIMFrontPort -Id $FrontPortID -ErrorAction Stop
if ($Force -or $pscmdlet.ShouldProcess("Name: $($CurrentPort.Name) | ID: $($CurrentPort.Id)", "Remove")) {
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'front-ports', $CurrentPort.Id))
$URI = BuildNewURI -Segments $Segments
InvokeNetboxRequest -URI $URI -Method DELETE
}
}
}
end {
}
}

View file

@ -0,0 +1,60 @@
function Set-NetboxDCIMFrontPort {
[CmdletBinding(ConfirmImpact = 'Medium',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[uint16]$Device,
[uint16]$Module,
[string]$Name,
[string]$Label,
[string]$Type,
[ValidatePattern('^[0-9a-f]{6}$')]
[string]$Color,
[uint64]$Rear_Port,
[uint16]$Rear_Port_Position,
[string]$Description,
[bool]$Mark_Connected,
[uint64[]]$Tags,
[switch]$Force
)
begin {
}
process {
foreach ($FrontPortID in $Id) {
$CurrentPort = Get-NetboxDCIMFrontPort -Id $FrontPortID -ErrorAction Stop
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'front-ports', $CurrentPort.Id))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id'
$URI = BuildNewURI -Segments $Segments
if ($Force -or $pscmdlet.ShouldProcess("Front Port ID $($CurrentPort.Id)", "Set")) {
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method PATCH
}
}
}
end {
}
}

View file

@ -1,17 +1,4 @@
<#
.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-NetboxDCIMPlatform.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxDCIMPlatform {
[CmdletBinding()]
[OutputType([pscustomobject])]
@ -22,13 +9,13 @@ function Get-NetboxDCIMPlatform {
[uint16]$Offset,
[Parameter(ParameterSetName = 'ById')]
[uint16[]]$Id,
[uint64[]]$Id,
[string]$Name,
[string]$Slug,
[uint16]$Manufacturer_Id,
[uint64]$Manufacturer_Id,
[string]$Manufacturer,

View file

@ -1,28 +1,18 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:10
Created by: Claussen
Organization: NEOnet
Filename: Add-NetboxDCIMInterface.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Add-NetboxDCIMInterface {
[CmdletBinding()]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true)]
[uint16]$Device,
[uint64]$Device,
[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,
[bool]$Enabled,
[object]$Form_Factor,
@ -33,7 +23,7 @@ function Add-NetboxDCIMInterface {
[bool]$MGMT_Only,
[uint16]$LAG,
[uint64]$LAG,
[string]$Description,
@ -47,10 +37,6 @@ function Add-NetboxDCIMInterface {
[uint16[]]$Tagged_VLANs
)
# if ($null -ne $Form_Factor) {
# $PSBoundParameters.Form_Factor = ValidateDCIMChoice -ProvidedValue $Form_Factor -InterfaceFormFactor
# }
if (-not [System.String]::IsNullOrWhiteSpace($Mode)) {
$PSBoundParameters.Mode = switch ($Mode) {
'Access' {

View file

@ -1,19 +1,6 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:10
Created by: Claussen
Organization: NEOnet
Filename: Add-NetboxDCIMInterfaceConnection.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Add-NetboxDCIMInterfaceConnection {
<#
<#
.SYNOPSIS
Create a new connection between two interfaces
@ -43,19 +30,15 @@ function Add-NetboxDCIMInterfaceConnection {
[object]$Connection_Status,
[Parameter(Mandatory = $true)]
[uint16]$Interface_A,
[uint64]$Interface_A,
[Parameter(Mandatory = $true)]
[uint16]$Interface_B
[uint64]$Interface_B
)
if ($null -ne $Connection_Status) {
$PSBoundParameters.Connection_Status = ValidateDCIMChoice -ProvidedValue $Connection_Status -InterfaceConnectionStatus
}
# Verify if both Interfaces exist
$I_A = Get-NetboxDCIMInterface -Id $Interface_A -ErrorAction Stop
$I_B = Get-NetboxDCIMInterface -Id $Interface_B -ErrorAction Stop
Get-NetboxDCIMInterface -Id $Interface_A -ErrorAction Stop | Out-null
Get-NetboxDCIMInterface -Id $Interface_B -ErrorAction Stop | Out-null
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'interface-connections'))

View file

@ -1,18 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:09
Created by: Claussen
Organization: NEOnet
Filename: Get-NetboxDCIMInterface.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>
function Get-NetboxDCIMInterface {
function Get-NetboxDCIMInterface {
[CmdletBinding()]
[OutputType([pscustomobject])]
param
@ -22,9 +8,9 @@ function Get-NetboxDCIMInterface {
[uint16]$Offset,
[Parameter(ValueFromPipelineByPropertyName = $true)]
[uint16]$Id,
[uint64]$Id,
[uint16]$Name,
[uint64]$Name,
[object]$Form_Factor,
@ -36,26 +22,25 @@ function Get-NetboxDCIMInterface {
[string]$Device,
[uint16]$Device_Id,
[uint64]$Device_Id,
[uint16]$Type,
[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,
[uint16]$LAG_Id,
[uint64]$LAG_Id,
[string]$MAC_Address,
[switch]$Raw
)
if ($null -ne $Form_Factor) {
$PSBoundParameters.Form_Factor = ValidateDCIMChoice -ProvidedValue $Form_Factor -InterfaceFormFactor
process {
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'interfaces'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $URI -Raw:$Raw
}
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'interfaces'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $URI -Raw:$Raw
}

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:10
Created by: Claussen
Organization: NEOnet
Filename: Get-NetboxDCIMInterfaceConnection.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxDCIMInterfaceConnection {
[CmdletBinding()]
[OutputType([pscustomobject])]
@ -21,21 +8,17 @@ function Get-NetboxDCIMInterfaceConnection {
[uint16]$Offset,
[uint16]$Id,
[uint64]$Id,
[object]$Connection_Status,
[uint16]$Site,
[uint64]$Site,
[uint16]$Device,
[uint64]$Device,
[switch]$Raw
)
if ($null -ne $Connection_Status) {
$PSBoundParameters.Connection_Status = ValidateDCIMChoice -ProvidedValue $Connection_Status -InterfaceConnectionStatus
}
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'interface-connections'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Raw'

View file

@ -1,19 +1,5 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:11
Created by: Claussen
Organization: NEOnet
Filename: Remove-NetboxDCIMInterface.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>
function Remove-NetboxDCIMInterface {
<#
function Remove-NetboxDCIMInterface {
<#
.SYNOPSIS
Removes an interface
@ -34,12 +20,12 @@ function Remove-NetboxDCIMInterface {
#>
[CmdletBinding(ConfirmImpact = 'High',
SupportsShouldProcess = $true)]
SupportsShouldProcess = $true)]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint16[]]$Id,
ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[switch]$Force
)

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:12
Created by: Claussen
Organization: NEOnet
Filename: Remove-NetboxDCIMInterfaceConnection.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Remove-NetboxDCIMInterfaceConnection {
[CmdletBinding(ConfirmImpact = 'High',
SupportsShouldProcess = $true)]
@ -20,7 +7,7 @@ function Remove-NetboxDCIMInterfaceConnection {
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint16[]]$Id,
[uint64[]]$Id,
[switch]$Force
)

View file

@ -1,27 +1,14 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:11
Created by: Claussen
Organization: NEOnet
Filename: Set-NetboxDCIMInterface.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>
function Set-NetboxDCIMInterface {
[CmdletBinding()]
function Set-NetboxDCIMInterface {
[CmdletBinding(ConfirmImpact = 'Medium',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint16[]]$Id,
ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[uint16]$Device,
[uint64]$Device,
[string]$Name,
@ -29,13 +16,16 @@ function Set-NetboxDCIMInterface {
[object]$Form_Factor,
[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,
[uint16]$MTU,
[string]$MAC_Address,
[bool]$MGMT_Only,
[uint16]$LAG,
[uint64]$LAG,
[string]$Description,
@ -46,14 +36,12 @@ function Set-NetboxDCIMInterface {
[uint16]$Untagged_VLAN,
[ValidateRange(1, 4094)]
[uint16[]]$Tagged_VLANs
[uint16[]]$Tagged_VLANs,
[switch]$Force
)
begin {
# if ($null -ne $Form_Factor) {
# $PSBoundParameters.Form_Factor = ValidateDCIMChoice -ProvidedValue $Form_Factor -InterfaceFormFactor
# }
if (-not [System.String]::IsNullOrWhiteSpace($Mode)) {
$PSBoundParameters.Mode = switch ($Mode) {
'Access' {
@ -88,7 +76,9 @@ function Set-NetboxDCIMInterface {
$URI = BuildNewURI -Segments $Segments
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method PATCH
if ($Force -or $pscmdlet.ShouldProcess("Interface ID $($CurrentInterface.Id)", "Set")) {
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method PATCH
}
}
}

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/23/2020 12:11
Created by: Claussen
Organization: NEOnet
Filename: Set-NetboxDCIMInterfaceConnection.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Set-NetboxDCIMInterfaceConnection {
<#
.SYNOPSIS
@ -48,22 +35,18 @@ function Set-NetboxDCIMInterfaceConnection {
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint16[]]$Id,
[uint64[]]$Id,
[object]$Connection_Status,
[uint16]$Interface_A,
[uint64]$Interface_A,
[uint16]$Interface_B,
[uint64]$Interface_B,
[switch]$Force
)
begin {
# if ($null -ne $Connection_Status) {
# $PSBoundParameters.Connection_Status = ValidateDCIMChoice -ProvidedValue $Connection_Status -InterfaceConnectionStatus
# }
if ((@($ID).Count -gt 1) -and ($Interface_A -or $Interface_B)) {
throw "Cannot set multiple connections to the same interface"
}

View file

@ -0,0 +1,48 @@
function Add-NetboxDCIMRearPort {
[CmdletBinding()]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true)]
[uint64]$Device,
[uint64]$Module,
[Parameter(Mandatory = $true)]
[string]$Name,
[string]$Label,
[Parameter(Mandatory = $true)]
[string]$Type,
[ValidatePattern('^[0-9a-f]{6}$')]
[string]$Color,
[uint16]$Positions = 1,
[string]$Description,
[bool]$Mark_Connected,
[uint16[]]$Tags
)
begin {
}
process {
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'rear-ports'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method POST
}
end {
}
}

View file

@ -0,0 +1,34 @@
function Get-NetboxDCIMRearPort {
[CmdletBinding()]
[OutputType([pscustomobject])]
param
(
[uint16]$Limit,
[uint16]$Offset,
[Parameter(ValueFromPipelineByPropertyName = $true)]
[uint64]$Id,
[string]$Name,
[string]$Device,
[uint64]$Device_Id,
[string]$Type,
[switch]$Raw
)
process {
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'rear-ports'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $URI -Raw:$Raw
}
}

View file

@ -0,0 +1,35 @@
function Remove-NetboxDCIMRearPort {
[CmdletBinding(ConfirmImpact = 'High',
SupportsShouldProcess = $true)]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[switch]$Force
)
begin {
}
process {
foreach ($RearPortID in $Id) {
$CurrentPort = Get-NetboxDCIMRearPort -Id $RearPortID -ErrorAction Stop
if ($Force -or $pscmdlet.ShouldProcess("Name: $($CurrentPort.Name) | ID: $($CurrentPort.Id)", "Remove")) {
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'rear-ports', $CurrentPort.Id))
$URI = BuildNewURI -Segments $Segments
InvokeNetboxRequest -URI $URI -Method DELETE
}
}
}
end {
}
}

View file

@ -0,0 +1,59 @@

function Set-NetboxDCIMRearPort {
[CmdletBinding(ConfirmImpact = 'Medium',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[uint64]$Device,
[uint64]$Module,
[string]$Name,
[string]$Label,
[string]$Type,
[ValidatePattern('^[0-9a-f]{6}$')]
[string]$Color,
[uint16]$Positions,
[string]$Description,
[bool]$Mark_Connected,
[uint16[]]$Tags,
[switch]$Force
)
begin {
}
process {
foreach ($RearPortID in $Id) {
$CurrentPort = Get-NetboxDCIMRearPort -Id $RearPortID -ErrorAction Stop
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'rear-ports', $CurrentPort.Id))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id'
$URI = BuildNewURI -Segments $Segments
if ($Force -or $pscmdlet.ShouldProcess("Rear Port ID $($CurrentPort.Id)", "Set")) {
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method PATCH
}
}
}
end {
}
}

View file

@ -1,25 +1,11 @@
<#
.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()]
[CmdletBinding(DefaultParameterSetName = 'Query')]
[OutputType([pscustomobject])]
param
(
[Parameter(ParameterSetName = 'ByID', ValueFromPipelineByPropertyName = $true)]
[uint32]$Id,
[uint64]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Name,
@ -34,7 +20,7 @@ function Get-NetboxDCIMSite {
[string]$Facility,
[Parameter(ParameterSetName = 'Query')]
[uint32]$ASN,
[uint64]$ASN,
[Parameter(ParameterSetName = 'Query')]
[decimal]$Latitude,
@ -52,13 +38,13 @@ function Get-NetboxDCIMSite {
[string]$Contact_Email,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Tenant_Group_ID,
[uint64]$Tenant_Group_ID,
[Parameter(ParameterSetName = 'Query')]
[string]$Tenant_Group,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Tenant_ID,
[uint64]$Tenant_ID,
[Parameter(ParameterSetName = 'Query')]
[string]$Tenant,
@ -67,7 +53,7 @@ function Get-NetboxDCIMSite {
[string]$Status,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Region_ID,
[uint64]$Region_ID,
[Parameter(ParameterSetName = 'Query')]
[string]$Region,
@ -81,28 +67,29 @@ function Get-NetboxDCIMSite {
[switch]$Raw
)
switch ($PSCmdlet.ParameterSetName) {
'ById' {
foreach ($Site_ID in $ID) {
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'sites', $Site_Id))
process {
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"
$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
}
}
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
}
}
}

View file

@ -0,0 +1,86 @@
<#
.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: New-NetboxDCIMSite.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>
function New-NetboxDCIMSite {
<#
.SYNOPSIS
Create a new Site to Netbox
.DESCRIPTION
Create a new Site to Netbox
.EXAMPLE
New-NetboxDCIMSite -name MySite
Add new Site MySite on Netbox
#>
[CmdletBinding(ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true)]
[string]$Name,
[string]$Slug,
[string]$Facility,
[uint64]$ASN,
[decimal]$Latitude,
[decimal]$Longitude,
[string]$Contact_Name,
[string]$Contact_Phone,
[string]$Contact_Email,
[uint64]$Tenant_Group,
[uint64]$Tenant,
[string]$Status,
[uint64]$Region,
[string]$Description,
[string]$Comments,
[switch]$Raw
)
process {
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'sites'))
$Method = 'POST'
if (-not $PSBoundParameters.ContainsKey('slug')) {
$PSBoundParameters.Add('slug', $name)
}
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments
if ($PSCmdlet.ShouldProcess($name, 'Create new Site')) {
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
}
}
}

View file

@ -0,0 +1,64 @@
<#
.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: New-NetboxDCIMSite.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>
function Remove-NetboxDCIMSite {
<#
.SYNOPSIS
Remove a Site
.DESCRIPTION
Remove a DCIM Site from Netbox
.EXAMPLE
Remove-NetboxDCIMSite -Id 1
Remove DCM Site with id 1
.EXAMPLE
Get-NetboxDCIMSite -name My Site | Remove-NetboxDCIMSite -confirm:$false
Remove DCM Site with name My Site without confirmation
#>
[CmdletBinding(ConfirmImpact = 'High',
SupportsShouldProcess = $true)]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint]$Id
)
begin {
}
process {
$CurrentSite = Get-NetboxDCIMSite -Id $Id -ErrorAction Stop
if ($pscmdlet.ShouldProcess("$($CurrentSite.Name)/$($CurrentSite.Id)", "Remove Site")) {
$Segments = [System.Collections.ArrayList]::new(@('dcim', 'sites', $CurrentSite.Id))
$URI = BuildNewURI -Segments $Segments
InvokeNetboxRequest -URI $URI -Method DELETE
}
}
end {
}
}

View file

@ -0,0 +1,31 @@

function Get-NetboxTag {
[CmdletBinding()]
[OutputType([pscustomobject])]
param
(
[Parameter(ValueFromPipelineByPropertyName = $true)]
[uint64]$Id,
[string]$Name,
[string]$Slug,
[uint16]$Limit,
[uint16]$Offset,
[switch]$Raw
)
process {
$Segments = [System.Collections.ArrayList]::new(@('extras', 'tags'))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $URI -Raw:$Raw
}
}

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/26/2020 14:22
Created by: Claussen
Organization: NEOnet
Filename: BuildNewURI.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function BuildNewURI {
<#
.SYNOPSIS

View file

@ -1,17 +1,4 @@
<#
.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: BuildURIComponents.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function BuildURIComponents {
[CmdletBinding()]
[OutputType([hashtable])]

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/26/2020 14:22
Created by: Claussen
Organization: NEOnet
Filename: CheckNetboxIsConnected.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function CheckNetboxIsConnected {
[CmdletBinding()]
param ()

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/26/2020 14:25
Created by: Claussen
Organization: NEOnet
Filename: CreateEnum.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function CreateEnum {
[CmdletBinding()]
param

View file

@ -1,18 +1,4 @@
<#
.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

View file

@ -1,17 +1,4 @@
<#
.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: GetNetboxAPIErrorBody.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function GetNetboxAPIErrorBody {
param
(

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/26/2020 14:24
Created by: Claussen
Organization: NEOnet
Filename: InvokeNetboxRequest.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function InvokeNetboxRequest {
[CmdletBinding()]
param
@ -24,8 +11,8 @@ function InvokeNetboxRequest {
[pscustomobject]$Body = $null,
[ValidateRange(0, 60)]
[uint16]$Timeout = 5,
[ValidateRange(1, 65535)]
[uint16]$Timeout = (Get-NetboxTimeout),
[ValidateSet('GET', 'PATCH', 'PUT', 'POST', 'DELETE', 'OPTIONS', IgnoreCase = $true)]
[string]$Method = 'GET',
@ -38,15 +25,17 @@ function InvokeNetboxRequest {
$Headers.Authorization = "Token {0}" -f $creds.GetNetworkCredential().Password
$splat = @{
'Method' = $Method
'Uri' = $URI.Uri.AbsoluteUri # This property auto generates the scheme, hostname, path, and query
'Headers' = $Headers
'TimeoutSec' = $Timeout
'Method' = $Method
'Uri' = $URI.Uri.AbsoluteUri # This property auto generates the scheme, hostname, path, and query
'Headers' = $Headers
'TimeoutSec' = $Timeout
'ContentType' = 'application/json'
'ErrorAction' = 'Stop'
'Verbose' = $VerbosePreference
'Verbose' = $VerbosePreference
}
$splat += Get-NetboxInvokeParams
if ($Body) {
Write-Verbose "BODY: $($Body | ConvertTo-Json -Compress)"
$null = $splat.Add('Body', ($Body | ConvertTo-Json -Compress))

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/26/2020 14:25
Created by: Claussen
Organization: NEOnet
Filename: ThrowNetboxRESTError.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function ThrowNetboxRESTError {
$uriSegments = [System.Collections.ArrayList]::new(@('fake', 'url'))

View file

@ -7,7 +7,7 @@
[string]$Address,
[Parameter(ParameterSetName = 'ByID')]
[uint32[]]$Id,
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Query,
@ -16,7 +16,7 @@
[object]$Family,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Parent,
[string]$Parent,
[Parameter(ParameterSetName = 'Query')]
[byte]$Mask_Length,
@ -25,28 +25,28 @@
[string]$VRF,
[Parameter(ParameterSetName = 'Query')]
[uint32]$VRF_Id,
[uint64]$VRF_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Tenant,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Tenant_Id,
[uint64]$Tenant_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Device,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Device_ID,
[uint64]$Device_ID,
[Parameter(ParameterSetName = 'Query')]
[string]$Virtual_Machine,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Virtual_Machine_Id,
[uint64]$Virtual_Machine_Id,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Interface_Id,
[uint64]$Interface_Id,
[Parameter(ParameterSetName = 'Query')]
[object]$Status,

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 11:50
Created by: Claussen
Organization: NEOnet
Filename: Get-NetboxIPAMAvailableIP.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxIPAMAvailableIP {
<#
.SYNOPSIS
@ -34,7 +21,14 @@ function Get-NetboxIPAMAvailableIP {
A description of the NumberOfIPs parameter.
.EXAMPLE
PS C:\> Get-NetboxIPAMAvaiableIP -Prefix_ID $value1
Get-NetboxIPAMAvailableIP -Prefix_ID (Get-NetboxIPAMPrefix -Prefix 192.0.2.0/24).id
Get (Next) Available IP on the Prefix 192.0.2.0/24
.EXAMPLE
Get-NetboxIPAMAvailableIP -Prefix_ID 2 -NumberOfIPs 3
Get 3 (Next) Available IP on the Prefix 192.0.2.0/24
.NOTES
Additional information about the function.
@ -46,10 +40,10 @@ function Get-NetboxIPAMAvailableIP {
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[Alias('Id')]
[int]$Prefix_ID,
[uint64]$Prefix_ID,
[Alias('NumberOfIPs')]
[int]$Limit,
[uint64]$Limit,
[switch]$Raw
)

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 11:51
Created by: Claussen
Organization: NEOnet
Filename: New-NetboxIPAMAddress.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function New-NetboxIPAMAddress {
<#
.SYNOPSIS
@ -50,14 +37,19 @@ function New-NetboxIPAMAddress {
.PARAMETER Dns_name
DNS Name of IP address (example : netbox.example.com)
.PARAMETER Force
Do not prompt for confirmation to create IP.
.PARAMETER Assigned_Object_Type
Assigned Object Type dcim.interface or virtualization.vminterface
.PARAMETER Assigned_Object_Id
Assigned Object ID
.PARAMETER Raw
Return raw results from API service
.EXAMPLE
PS C:\> Create-NetboxIPAMAddress
New-NetboxIPAMAddress -Address 192.0.2.1/32
Add new IP Address 192.0.2.1/32 with status active
.NOTES
Additional information about the function.
@ -74,23 +66,26 @@ function New-NetboxIPAMAddress {
[object]$Status = 'Active',
[int]$Tenant,
[uint64]$Tenant,
[int]$VRF,
[uint64]$VRF,
[object]$Role,
[int]$NAT_Inside,
[uint64]$NAT_Inside,
[hashtable]$Custom_Fields,
[int]$Interface,
[uint64]$Interface,
[string]$Description,
[string]$Dns_name,
[switch]$Force,
[ValidateSet('dcim.interface', 'virtualization.vminterface', IgnoreCase = $true)]
[string]$Assigned_Object_Type,
[uint64]$Assigned_Object_Id,
[switch]$Raw
)
@ -99,22 +94,11 @@ function New-NetboxIPAMAddress {
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-addresses'))
$Method = 'POST'
# # 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
# }
# }
#
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments
if ($Force -or $PSCmdlet.ShouldProcess($Address, 'Create new IP address')) {
if ($PSCmdlet.ShouldProcess($Address, 'Create new IP address')) {
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
}
}

View file

@ -1,16 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 11:52
Created by: Claussen
Organization: NEOnet
Filename: Remove-NetboxIPAMAddress.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Remove-NetboxIPAMAddress {
<#
.SYNOPSIS
@ -38,7 +26,7 @@ function Remove-NetboxIPAMAddress {
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[int[]]$Id,
[uint64[]]$Id,
[switch]$Force
)

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 11:53
Created by: Claussen
Organization: NEOnet
Filename: Set-NetboxIPAMAddress.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Set-NetboxIPAMAddress {
[CmdletBinding(ConfirmImpact = 'Medium',
SupportsShouldProcess = $true)]
@ -19,26 +6,26 @@ function Set-NetboxIPAMAddress {
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[int[]]$Id,
[uint64[]]$Id,
[string]$Address,
[string]$Status,
[int]$Tenant,
[uint64]$Tenant,
[int]$VRF,
[uint64]$VRF,
[object]$Role,
[int]$NAT_Inside,
[uint64]$NAT_Inside,
[hashtable]$Custom_Fields,
[ValidateSet('dcim.interface', 'virtualization.vminterface', IgnoreCase = $true)]
[string]$Assigned_Object_Type,
[uint16]$Assigned_Object_Id,
[uint64]$Assigned_Object_Id,
[string]$Description,

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 11:49
Created by: Claussen
Organization: NEOnet
Filename: Get-NetboxIPAMAggregate.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxIPAMAggregate {
[CmdletBinding(DefaultParameterSetName = 'Query')]
param
@ -20,7 +7,7 @@ function Get-NetboxIPAMAggregate {
[string]$Query,
[Parameter(ParameterSetName = 'ByID')]
[uint16[]]$Id,
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Prefix,
@ -29,7 +16,7 @@ function Get-NetboxIPAMAggregate {
[object]$Family,
[Parameter(ParameterSetName = 'Query')]
[uint16]$RIR_Id,
[uint64]$RIR_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$RIR,

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 11:51
Created by: Claussen
Organization: NEOnet
Filename: Get-NetboxIPAMPrefix.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxIPAMPrefix {
<#
.SYNOPSIS
@ -104,7 +91,7 @@ function Get-NetboxIPAMPrefix {
[string]$Query,
[Parameter(ParameterSetName = 'ByID')]
[uint32[]]$Id,
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[object]$Family,
@ -129,25 +116,25 @@ function Get-NetboxIPAMPrefix {
[string]$VRF,
[Parameter(ParameterSetName = 'Query')]
[uint32]$VRF_Id,
[uint64]$VRF_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Tenant,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Tenant_Id,
[uint64]$Tenant_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Site,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Site_Id,
[uint64]$Site_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Vlan_VId,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Vlan_Id,
[uint64]$Vlan_Id,
[Parameter(ParameterSetName = 'Query')]
[object]$Status,
@ -156,7 +143,7 @@ function Get-NetboxIPAMPrefix {
[string]$Role,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Role_Id,
[uint64]$Role_Id,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Limit,

View file

@ -1,18 +1,7 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 11:52
Created by: Claussen
Organization: NEOnet
Filename: New-NetboxIPAMPrefix.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function New-NetboxIPAMPrefix {
[CmdletBinding(ConfirmImpact = 'low',
SupportsShouldProcess = $true)]
[CmdletBinding()]
param
(
@ -21,7 +10,7 @@ function New-NetboxIPAMPrefix {
[object]$Status = 'Active',
[uint16]$Tenant,
[uint64]$Tenant,
[object]$Role,
@ -29,18 +18,18 @@ function New-NetboxIPAMPrefix {
[string]$Description,
[uint16]$Site,
[uint64]$Site,
[uint16]$VRF,
[uint64]$VRF,
[uint16]$VLAN,
[uint64]$VLAN,
[hashtable]$Custom_Fields,
[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
@ -55,5 +44,7 @@ function New-NetboxIPAMPrefix {
$URI = BuildNewURI -Segments $URIComponents.Segments
InvokeNetboxRequest -URI $URI -Method POST -Body $URIComponents.Parameters -Raw:$Raw
if ($PSCmdlet.ShouldProcess($Prefix, 'Create new Prefix')) {
InvokeNetboxRequest -URI $URI -Method POST -Body $URIComponents.Parameters -Raw:$Raw
}
}

View file

@ -1,17 +1,4 @@
<#
.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)]
@ -19,19 +6,19 @@ function Set-NetboxIPAMPrefix {
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint16[]]$Id,
[uint64[]]$Id,
[string]$Prefix,
[string]$Status,
[uint16]$Tenant,
[uint64]$Tenant,
[uint16]$Site,
[uint64]$Site,
[uint16]$VRF,
[uint64]$VRF,
[uint16]$VLAN,
[uint64]$VLAN,
[object]$Role,

View file

@ -0,0 +1,73 @@

function Get-NetboxIPAMAddressRange {
[CmdletBinding(DefaultParameterSetName = 'Query')]
param
(
[Parameter(ParameterSetName = 'Query',
Position = 0)]
[string]$Range,
[Parameter(ParameterSetName = 'ByID')]
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Query,
[Parameter(ParameterSetName = 'Query')]
[object]$Family,
[Parameter(ParameterSetName = 'Query')]
[string]$VRF,
[Parameter(ParameterSetName = 'Query')]
[uint32]$VRF_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Tenant,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Tenant_Id,
[Parameter(ParameterSetName = 'Query')]
[object]$Status,
[Parameter(ParameterSetName = 'Query')]
[object]$Role,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Limit,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Offset,
[switch]$Raw
)
switch ($PSCmdlet.ParameterSetName) {
'ById' {
foreach ($Range_ID in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-ranges', $Range_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-ranges'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
break
}
}
}

View file

@ -0,0 +1,106 @@

function New-NetboxIPAMAddressRange {
<#
.SYNOPSIS
Create a new IP address range to Netbox
.DESCRIPTION
Create a new IP address range to Netbox with a status of Active by default. The maximum supported
size of an IP range is 2^32 - 1.
.PARAMETER Start_Address
Starting IPv4 or IPv6 address (with mask). The maximum supported size of an IP range is 2^32 - 1.
.PARAMETER End_Address
Ending IPv4 or IPv6 address (with mask). The maximum supported size of an IP range is 2^32 - 1.
.PARAMETER Status
Operational status of this range. Defaults to Active
.PARAMETER Tenant
Tenant ID
.PARAMETER VRF
VRF ID
.PARAMETER Role
Role such as backup, customer, development, etc... Defaults to nothing
.PARAMETER Custom_Fields
Custom field hash table. Will be validated by the API service
.PARAMETER Description
Description of IP address range
.PARAMETER Comments
Extra comments (markdown supported).
.PARAMETER Tags
One or more tags.
.PARAMETER Mark_Utilized
Treat as 100% utilized
.PARAMETER Raw
Return raw results from API service
.EXAMPLE
New-NetboxIPAMAddressRange -Start_Address 192.0.2.20/24 -End_Address 192.0.2.20/24
Add new IP Address range from 192.0.2.20/24 to 192.0.2.20/24 with status active
.NOTES
https://netbox.neonet.org/static/docs/models/ipam/iprange/
#>
[CmdletBinding(ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true)]
[string]$Start_Address,
[Parameter(Mandatory = $true)]
[string]$End_Address,
[object]$Status = 'Active',
[uint64]$Tenant,
[uint64]$VRF,
[object]$Role,
[hashtable]$Custom_Fields,
[string]$Description,
[string]$Comments,
[object[]]$Tags,
[switch]$Mark_Utilized,
[switch]$Raw
)
process {
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-ranges'))
$Method = 'POST'
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments
if ($PSCmdlet.ShouldProcess($Start_Address, 'Create new IP address range')) {
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
}
}
}

View file

@ -0,0 +1,47 @@

function Remove-NetboxIPAMAddressRange {
<#
.SYNOPSIS
Remove an IP address range from Netbox
.DESCRIPTION
Removes/deletes an IP address range from Netbox by ID
.PARAMETER Id
Database ID of the IP address range object.
.PARAMETER Force
Do not confirm.
.EXAMPLE
PS C:\> Remove-NetboxIPAMAddressRange -Id 1234
.NOTES
Additional information about the function.
#>
[CmdletBinding(ConfirmImpact = 'High',
SupportsShouldProcess = $true)]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[switch]$Force
)
process {
foreach ($Range_Id in $Id) {
$CurrentRange = Get-NetboxIPAMAddressRange -Id $Range_Id -ErrorAction Stop
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-ranges', $Range_Id))
if ($Force -or $pscmdlet.ShouldProcess($CurrentRange.start_address, "Delete")) {
$URI = BuildNewURI -Segments $Segments
InvokeNetboxRequest -URI $URI -Method DELETE
}
}
}
}

View file

@ -0,0 +1,58 @@

function Set-NetboxIPAMAddressRange {
[CmdletBinding(ConfirmImpact = 'Medium',
SupportsShouldProcess = $true)]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[string]$Start_Address,
[string]$End_Address,
[object]$Status,
[uint64]$Tenant,
[uint64]$VRF,
[object]$Role,
[hashtable]$Custom_Fields,
[string]$Description,
[string]$Comments,
[object[]]$Tags,
[switch]$Mark_Utilized,
[switch]$Force,
[switch]$Raw
)
begin {
$Method = 'PATCH'
}
process {
foreach ($RangeID in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('ipam', 'ip-ranges', $RangeID))
Write-Verbose "Obtaining IP range from ID $RangeID"
$CurrentRange = Get-NetboxIPAMAddressRange -Id $RangeID -ErrorAction Stop
if ($Force -or $PSCmdlet.ShouldProcess("$($CurrentRange.Start_Address) - $($CurrentRange.End_Address)", 'Set')) {
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id', 'Force'
$URI = BuildNewURI -Segments $URIComponents.Segments
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method $Method
}
}
}
}

View file

@ -49,7 +49,7 @@ function Get-NetboxIPAMRole {
[string]$Query,
[Parameter(ParameterSetName = 'ByID')]
[uint32[]]$Id,
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Slug,

View file

@ -1,19 +1,6 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/16/2020 16:34
Created by: Claussen
Organization: NEOnet
Filename: Get-NetboxIPAMVLAN.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxIPAMVLAN {
[CmdletBinding()]
[CmdletBinding(DefaultParameterSetName = 'Query')]
param
(
[Parameter(ParameterSetName = 'Query',
@ -22,7 +9,7 @@ function Get-NetboxIPAMVLAN {
[uint16]$VID,
[Parameter(ParameterSetName = 'ByID')]
[uint32[]]$Id,
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Query,
@ -34,13 +21,13 @@ function Get-NetboxIPAMVLAN {
[string]$Tenant,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Tenant_Id,
[uint64]$Tenant_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$TenantGroup,
[Parameter(ParameterSetName = 'Query')]
[uint32]$TenantGroup_Id,
[uint64]$TenantGroup_Id,
[Parameter(ParameterSetName = 'Query')]
[object]$Status,
@ -52,19 +39,19 @@ function Get-NetboxIPAMVLAN {
[string]$Site,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Site_Id,
[uint64]$Site_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Group,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Group_Id,
[uint64]$Group_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Role,
[Parameter(ParameterSetName = 'Query')]
[uint32]$Role_Id,
[uint64]$Role_Id,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Limit,
@ -75,10 +62,6 @@ function Get-NetboxIPAMVLAN {
[switch]$Raw
)
# if ($null -ne $Status) {
# $PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -VLANStatus
# }
switch ($PSCmdlet.ParameterSetName) {
'ById' {
foreach ($VLAN_ID in $Id) {

View file

@ -1,5 +1,5 @@
function New-NetboxIPAMVLAN {
<#
<#
.SYNOPSIS
Create a new VLAN
@ -40,7 +40,8 @@
Additional information about the function.
#>
[CmdletBinding()]
[CmdletBinding(ConfirmImpact = 'low',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
@ -52,7 +53,7 @@
[object]$Status = 'Active',
[uint16]$Tenant,
[uint64]$Tenant,
[object]$Role,
@ -63,11 +64,11 @@
[switch]$Raw
)
# $PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -VLANStatus
#
# if ($null -ne $Role) {
# $PSBoundParameters.Role = ValidateIPAMChoice -ProvidedValue $Role -IPAddressRole
# }
# $PSBoundParameters.Status = ValidateIPAMChoice -ProvidedValue $Status -VLANStatus
# if ($null -ne $Role) {
# $PSBoundParameters.Role = ValidateIPAMChoice -ProvidedValue $Role -IPAddressRole
# }
$segments = [System.Collections.ArrayList]::new(@('ipam', 'vlans'))
@ -75,5 +76,7 @@
$URI = BuildNewURI -Segments $URIComponents.Segments
InvokeNetboxRequest -URI $URI -Method POST -Body $URIComponents.Parameters -Raw:$Raw
if ($PSCmdlet.ShouldProcess($nae, 'Create new Vlan $($vid)')) {
InvokeNetboxRequest -URI $URI -Method POST -Body $URIComponents.Parameters -Raw:$Raw
}
}

View file

@ -0,0 +1,11 @@
function Clear-NetboxCredential {
[CmdletBinding(ConfirmImpact = 'Medium', SupportsShouldProcess = $true)]
param
(
[switch]$Force
)
if ($Force -or ($PSCmdlet.ShouldProcess('Netbox Credentials', 'Clear'))) {
$script:NetboxConfig.Credential = $null
}
}

View file

@ -21,6 +21,12 @@
.PARAMETER URI
The full URI for the resource such as "https://netbox.domain.com:8443"
.PARAMETER SkipCertificateCheck
A description of the SkipCertificateCheck parameter.
.PARAMETER TimeoutSeconds
The number of seconds before the HTTP call times out. Defaults to 30 seconds
.EXAMPLE
PS C:\> Connect-NetboxAPI -Hostname "netbox.domain.com"
@ -49,7 +55,14 @@
[Parameter(ParameterSetName = 'URI',
Mandatory = $true)]
[string]$URI
[string]$URI,
[Parameter(Mandatory = $false)]
[switch]$SkipCertificateCheck = $false,
[ValidateNotNullOrEmpty()]
[ValidateRange(1, 65535)]
[uint16]$TimeoutSeconds = 30
)
if (-not $Credential) {
@ -63,7 +76,24 @@
}
}
$null = Set-NetboxCredential -Credential $Credential
$invokeParams = @{ SkipCertificateCheck = $SkipCertificateCheck; }
if ("Desktop" -eq $PSVersionTable.PsEdition) {
#Remove -SkipCertificateCheck from Invoke Parameter (not supported <= PS 5)
$invokeParams.remove("SkipCertificateCheck")
}
#for PowerShell (<=) 5 (Desktop), Enable TLS 1.1, 1.2 and Disable SSL chain trust
if ("Desktop" -eq $PSVersionTable.PsEdition) {
#Add System.web (Need for ParseQueryString)
Add-Type -AssemblyName System.Web
#Enable TLS 1.1 and 1.2
Set-NetboxCipherSSL
if ($SkipCertificateCheck) {
#Disable SSL chain trust...
Set-NetboxuntrustedSSL
}
}
switch ($PSCmdlet.ParameterSetName) {
'Manual' {
@ -79,8 +109,11 @@
}
$null = Set-NetboxHostName -Hostname $uriBuilder.Host
$null = Set-NetboxCredential -Credential $Credential
$null = Set-NetboxHostScheme -Scheme $uriBuilder.Scheme
$null = Set-NetboxHostPort -Port $uriBuilder.Port
$null = Set-NetboxInvokeParams -invokeParams $invokeParams
$null = Set-NetboxTimeout -TimeoutSeconds $TimeoutSeconds
try {
Write-Verbose "Verifying API connectivity..."
@ -95,25 +128,27 @@
}
}
Write-Verbose "Caching API definition"
$script:NetboxConfig.APIDefinition = Get-NetboxAPIDefinition
# Write-Verbose "Caching API definition"
# $script:NetboxConfig.APIDefinition = Get-NetboxAPIDefinition
#
# if ([version]$script:NetboxConfig.APIDefinition.info.version -lt 2.8) {
# $Script:NetboxConfig.Connected = $false
# throw "Netbox version is incompatible with this PS module. Requires >=2.8.*, found version $($script:NetboxConfig.APIDefinition.info.version)"
# }
if ([version]$script:NetboxConfig.APIDefinition.info.version -lt 2.8) {
Write-Verbose "Checking Netbox version compatibility"
$script:NetboxConfig.NetboxVersion = Get-NetboxVersion
if ([version]$script:NetboxConfig.NetboxVersion.'netbox-version' -lt 2.8) {
$Script:NetboxConfig.Connected = $false
throw "Netbox version is incompatible with this PS module. Requires >=2.8.*, found version $($script:NetboxConfig.APIDefinition.info.version)"
throw "Netbox version is incompatible with this PS module. Requires >=2.8.*, found version $($script:NetboxConfig.NetboxVersion.'netbox-version')"
} else {
Write-Verbose "Found compatible version [$($script:NetboxConfig.NetboxVersion.'netbox-version')]!"
}
$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
$script:NetboxConfig.ContentTypes = Get-NetboxContentType -Limit 500
Write-Verbose "Connection process completed"
}

View file

@ -0,0 +1,11 @@
function Get-NetboxInvokeParams {
[CmdletBinding()]
param ()
Write-Verbose "Getting Netbox InvokeParams"
if ($null -eq $script:NetboxConfig.InvokeParams) {
throw "Netbox Invoke Params is not set! You may set it with Set-NetboxInvokeParams -InvokeParams ..."
}
$script:NetboxConfig.InvokeParams
}

View file

@ -0,0 +1,13 @@

function Get-NetboxTimeout {
[CmdletBinding()]
[OutputType([uint16])]
param ()
Write-Verbose "Getting Netbox Timeout"
if ($null -eq $script:NetboxConfig.Timeout) {
throw "Netbox Timeout is not set! You may set it with Set-NetboxTimeout -TimeoutSeconds [uint16]"
}
$script:NetboxConfig.Timeout
}

View file

@ -0,0 +1,15 @@

function Get-NetboxVersion {
[CmdletBinding()]
param ()
$Segments = [System.Collections.ArrayList]::new(@('status'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary @{
'format' = 'json'
}
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters -SkipConnectedCheck
InvokeNetboxRequest -URI $URI
}

View file

@ -0,0 +1,8 @@
Function Set-NetboxCipherSSL {
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseShouldProcessforStateChangingFunctions", "")]
Param( )
# Hack for allowing TLS 1.1 and TLS 1.2 (by default it is only SSL3 and TLS (1.0))
$AllProtocols = [System.Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
}

View file

@ -1,16 +1,16 @@
function Set-NetboxCredential {
[CmdletBinding(DefaultParameterSetName = 'CredsObject',
ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
[OutputType([pscredential])]
param
(
[Parameter(ParameterSetName = 'CredsObject',
Mandatory = $true)]
Mandatory = $true)]
[pscredential]$Credential,
[Parameter(ParameterSetName = 'UserPass',
Mandatory = $true)]
Mandatory = $true)]
[securestring]$Token
)

View file

@ -1,6 +1,6 @@
function Set-NetboxHostName {
[CmdletBinding(ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
SupportsShouldProcess = $true)]
[OutputType([string])]
param
(

View file

@ -0,0 +1,14 @@
function Set-NetboxInvokeParams {
[CmdletBinding(ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
[OutputType([string])]
param(
[Parameter(Mandatory = $true)]
[array]$InvokeParams
)
if ($PSCmdlet.ShouldProcess('Netbox Invoke Params', 'Set')) {
$script:NetboxConfig.InvokeParams = $InvokeParams
$script:NetboxConfig.InvokeParams
}
}

View file

@ -0,0 +1,17 @@

function Set-NetboxTimeout {
[CmdletBinding(ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
[OutputType([uint16])]
param
(
[Parameter(Mandatory = $false)]
[ValidateRange(1, 65535)]
[uint16]$TimeoutSeconds = 30
)
if ($PSCmdlet.ShouldProcess('Netbox Timeout', 'Set')) {
$script:NetboxConfig.Timeout = $TimeoutSeconds
$script:NetboxConfig.Timeout
}
}

View file

@ -0,0 +1,19 @@
Function Set-NetboxUntrustedSSL {
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseShouldProcessforStateChangingFunctions", "")]
Param( )
# Hack for allowing untrusted SSL certs with https connections
Add-Type -TypeDefinition @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object -TypeName TrustAllCertsPolicy
}

View file

@ -1,29 +1,21 @@
<#
.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 ()
param
(
[ValidateSet('json', 'yaml', IgnoreCase = $true)]
[string]$Format = 'json'
)
#$URI = "https://netbox.neonet.org/api/docs/?format=openapi"
#$URI = "https://netbox.neonet.org/api/schema/?format=json"
$Segments = [System.Collections.ArrayList]::new(@('docs'))
$Segments = [System.Collections.ArrayList]::new(@('schema'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary @{'format' = 'openapi'}
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary @{
'format' = $Format.ToLower()
}
$URI = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters -SkipConnectedCheck
InvokeNetboxRequest -URI $URI -Timeout 10
InvokeNetboxRequest -URI $URI
}

View file

@ -0,0 +1,89 @@
function Get-NetboxContentType {
<#
.SYNOPSIS
Get a content type definition from Netbox
.DESCRIPTION
A detailed description of the Get-NetboxContentType function.
.PARAMETER Model
A description of the Model parameter.
.PARAMETER Id
The database ID of the contact role
.PARAMETER App_Label
A description of the App_Label parameter.
.PARAMETER Query
A standard search query that will match one or more contact roles.
.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-NetboxContentType
.NOTES
Additional information about the function.
#>
[CmdletBinding(DefaultParameterSetName = 'Query')]
param
(
[Parameter(ParameterSetName = 'Query',
Position = 0)]
[string]$Model,
[Parameter(ParameterSetName = 'ByID')]
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$App_Label,
[Parameter(ParameterSetName = 'Query')]
[string]$Query,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Limit,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Offset,
[switch]$Raw
)
switch ($PSCmdlet.ParameterSetName) {
'ById' {
foreach ($ContentType_ID in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('extras', 'content-types', $ContentType_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(@('extras', 'content-types'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
break
}
}
}

View file

@ -9,10 +9,11 @@
if ((-not ($script:NetboxConfig)) -or $Overwrite) {
Write-Verbose "Creating NetboxConfig hashtable"
$script:NetboxConfig = @{
'Connected' = $false
'Choices' = @{
'Connected' = $false
'Choices' = @{
}
'APIDefinition' = $null
'ContentTypes' = $null
}
}

View file

@ -0,0 +1,7 @@

function Test-NetboxAPIConnected {
[CmdletBinding()]
param ()
$script:NetboxConfig.Connected
}

View file

@ -4,7 +4,7 @@
$uriSegments = [System.Collections.ArrayList]::new(@('extras'))
$uri = BuildNewURI -Segments $uriSegments -Parameters @{'format' = 'json'} -SkipConnectedCheck
$uri = BuildNewURI -Segments $uriSegments -Parameters @{'format' = 'json' } -SkipConnectedCheck
InvokeNetboxRequest -URI $uri
}

View file

@ -0,0 +1,108 @@

function Get-NetboxContactAssignment {
<#
.SYNOPSIS
Get a contact Assignment from Netbox
.DESCRIPTION
A detailed description of the Get-NetboxContactAssignment function.
.PARAMETER Name
The specific name of the contact Assignment. Must match exactly as is defined in Netbox
.PARAMETER Id
The database ID of the contact Assignment
.PARAMETER Content_Type_Id
A description of the Content_Type_Id parameter.
.PARAMETER Content_Type
A description of the Content_Type parameter.
.PARAMETER Object_Id
A description of the Object_Id parameter.
.PARAMETER Contact_Id
A description of the Contact_Id parameter.
.PARAMETER Role_Id
A description of the Role_Id parameter.
.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-NetboxContactAssignment
.NOTES
Additional information about the function.
#>
[CmdletBinding(DefaultParameterSetName = 'Query')]
param
(
[Parameter(ParameterSetName = 'Query',
Position = 0)]
[string]$Name,
[Parameter(ParameterSetName = 'ByID')]
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[uint64]$Content_Type_Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Content_Type,
[Parameter(ParameterSetName = 'Query')]
[uint64]$Object_Id,
[Parameter(ParameterSetName = 'Query')]
[uint64]$Contact_Id,
[Parameter(ParameterSetName = 'Query')]
[uint64]$Role_Id,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Limit,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Offset,
[switch]$Raw
)
switch ($PSCmdlet.ParameterSetName) {
'ById' {
foreach ($ContactAssignment_ID in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contact-assignments', $ContactAssignment_ID))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id'
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
}
break
}
default {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contact-assignments'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
break
}
}
}

View file

@ -0,0 +1,79 @@

function New-NetboxContactAssignment {
<#
.SYNOPSIS
Create a new contact role assignment in Netbox
.DESCRIPTION
Creates a new contact role assignment in Netbox
.PARAMETER Content_Type
The content type for this assignment.
.PARAMETER Object_Id
ID of the object to assign.
.PARAMETER Contact
ID of the contact to assign.
.PARAMETER Role
ID of the contact role to assign.
.PARAMETER Priority
Piority of the contact assignment.
.PARAMETER Raw
Return the unparsed data from the HTTP request
.EXAMPLE
PS C:\> New-NetboxContactAssignment -Content_Type 'dcim.location' -Object_id 10 -Contact 15 -Role 10 -Priority 'Primary'
.NOTES
Valid content types: https://docs.netbox.dev/en/stable/features/contacts/#contacts_1
#>
[CmdletBinding(ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[ValidateSet('circuits.circuit', 'circuits.provider', 'circuits.provideraccount', 'dcim.device', 'dcim.location', 'dcim.manufacturer', 'dcim.powerpanel', 'dcim.rack', 'dcim.region', 'dcim.site', 'dcim.sitegroup', 'tenancy.tenant', 'virtualization.cluster', 'virtualization.clustergroup', 'virtualization.virtualmachine', IgnoreCase = $true)]
[string]$Content_Type,
[Parameter(Mandatory = $true)]
[uint64]$Object_Id,
[Parameter(Mandatory = $true)]
[uint64]$Contact,
[Parameter(Mandatory = $true)]
[uint64]$Role,
[ValidateSet('primary', 'secondary', 'tertiary', 'inactive', IgnoreCase = $true)]
[string]$Priority,
[switch]$Raw
)
begin {
$Method = 'POST'
}
process {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contact-assignments'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments
if ($PSCmdlet.ShouldProcess($Content_Type, 'Create new contact assignment')) {
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
}
}
}

View file

@ -0,0 +1,84 @@

function Set-NetboxContactAssignment {
<#
.SYNOPSIS
Update a contact role assignment in Netbox
.DESCRIPTION
Updates a contact role assignment in Netbox
.PARAMETER Content_Type
The content type for this assignment.
.PARAMETER Object_Id
ID of the object to assign.
.PARAMETER Contact
ID of the contact to assign.
.PARAMETER Role
ID of the contact role to assign.
.PARAMETER Priority
Priority of the contact assignment.
.PARAMETER Raw
Return the unparsed data from the HTTP request
.EXAMPLE
PS C:\> Set-NetboxContactAssignment -Id 11 -Content_Type 'dcim.location' -Object_id 10 -Contact 15 -Role 10 -Priority 'Primary'
.NOTES
Valid content types: https://docs.netbox.dev/en/stable/features/contacts/#contacts_1
#>
[CmdletBinding(ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[Parameter(ValueFromPipelineByPropertyName = $true)]
[ValidateSet('circuits.circuit', 'circuits.provider', 'circuits.provideraccount', 'dcim.device', 'dcim.location', 'dcim.manufacturer', 'dcim.powerpanel', 'dcim.rack', 'dcim.region', 'dcim.site', 'dcim.sitegroup', 'tenancy.tenant', 'virtualization.cluster', 'virtualization.clustergroup', 'virtualization.virtualmachine', IgnoreCase = $true)]
[string]$Content_Type,
[uint64]$Object_Id,
[uint64]$Contact,
[uint64]$Role,
[ValidateSet('primary', 'secondary', 'tertiary', 'inactive', IgnoreCase = $true)]
[string]$Priority,
[switch]$Raw
)
begin {
$Method = 'Patch'
}
process {
foreach ($ContactAssignmentId in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contact-assignments', $ContactAssignmentId))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id', 'Force'
$URI = BuildNewURI -Segments $URIComponents.Segments
$CurrentContactAssignment = Get-NetboxContactAssignment -Id $ContactAssignmentId -ErrorAction Stop
if ($PSCmdlet.ShouldProcess($CurrentContactAssignment.Id, 'Update contact assignment')) {
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
}
}
}
}

View file

@ -0,0 +1,90 @@

function Get-NetboxContactRole {
<#
.SYNOPSIS
Get a contact role from Netbox
.DESCRIPTION
A detailed description of the Get-NetboxContactRole function.
.PARAMETER Name
The specific name of the contact role. Must match exactly as is defined in Netbox
.PARAMETER Id
The database ID of the contact role
.PARAMETER Query
A standard search query that will match one or more contact roles.
.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-NetboxContactRole
.NOTES
Additional information about the function.
#>
[CmdletBinding(DefaultParameterSetName = 'Query')]
param
(
[Parameter(ParameterSetName = 'Query',
Position = 0)]
[string]$Name,
[Parameter(ParameterSetName = 'ByID')]
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Query,
[Parameter(ParameterSetName = 'Query')]
[string]$Slug,
[Parameter(ParameterSetName = 'Query')]
[string]$Description,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Limit,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Offset,
[switch]$Raw
)
switch ($PSCmdlet.ParameterSetName) {
'ById' {
foreach ($ContactRole_ID in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contact-roles', $ContactRole_ID))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id'
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
}
break
}
default {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contact-roles'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
break
}
}
}

View file

@ -0,0 +1,71 @@

function New-NetboxContactRole {
<#
.SYNOPSIS
Create a new contact role in Netbox
.DESCRIPTION
Creates a new contact role object in Netbox
.PARAMETER Name
The contact role name, e.g "Network Support"
.PARAMETER Slug
The unique URL for the role. Can only contain hypens, A-Z, a-z, 0-9, and underscores
.PARAMETER Description
Short description of the contact role
.PARAMETER Custom_Fields
A description of the Custom_Fields parameter.
.PARAMETER Raw
Return the unparsed data from the HTTP request
.EXAMPLE
PS C:\> New-NetboxContact -Name 'Leroy Jenkins' -Email 'leroy.jenkins@example.com'
.NOTES
Additional information about the function.
#>
[CmdletBinding(ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[ValidateLength(1, 100)]
[string]$Name,
[Parameter(Mandatory = $true)]
[ValidateLength(1, 100)]
[ValidatePattern('^[-a-zA-Z0-9_]+$')]
[string]$Slug,
[ValidateLength(0, 200)]
[string]$Description,
[hashtable]$Custom_Fields,
[switch]$Raw
)
process {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contacts'))
$Method = 'POST'
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments
if ($PSCmdlet.ShouldProcess($Name, 'Create new contact')) {
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
}
}
}

View file

@ -0,0 +1,80 @@
function Set-NetboxContactRole {
<#
.SYNOPSIS
Update a contact role in Netbox
.DESCRIPTION
Updates a contact role in Netbox
.PARAMETER Name
The contact role name, e.g "Network Support"
.PARAMETER Slug
The unique URL for the role. Can only contain hypens, A-Z, a-z, 0-9, and underscores
.PARAMETER Description
Short description of the contact role
.PARAMETER Custom_Fields
A description of the Custom_Fields parameter.
.PARAMETER Raw
Return the unparsed data from the HTTP request
.EXAMPLE
PS C:\> New-NetboxContact -Name 'Leroy Jenkins' -Email 'leroy.jenkins@example.com'
.NOTES
Additional information about the function.
#>
[CmdletBinding(ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[Parameter(ValueFromPipelineByPropertyName = $true)]
[ValidateLength(1, 100)]
[string]$Name,
[ValidateLength(1, 100)]
[ValidatePattern('^[-a-zA-Z0-9_]+$')]
[string]$Slug,
[ValidateLength(0, 200)]
[string]$Description,
[hashtable]$Custom_Fields,
[switch]$Raw
)
begin {
$Method = 'PATCH'
}
process {
foreach ($ContactRoleId in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contacts', $ContactRoleId))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id', 'Force'
$URI = BuildNewURI -Segments $URIComponents.Segments
$CurrentContactRole = Get-NetboxContactRole -Id $ContactRoleId -ErrorAction Stop
if ($Force -or $PSCmdlet.ShouldProcess($CurrentContactRole.Name, 'Update contact role')) {
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
}
}
}
}

View file

@ -0,0 +1,120 @@

function Get-NetboxContact {
<#
.SYNOPSIS
Get a contact from Netbox
.DESCRIPTION
Obtain a contact or contacts from Netbox by ID or query
.PARAMETER Name
The specific name of the Contact. Must match exactly as is defined in Netbox
.PARAMETER Id
The database ID of the Contact
.PARAMETER Query
A standard search query that will match one or more Contacts.
.PARAMETER Email
Email address of the contact
.PARAMETER Title
Title of the contact
.PARAMETER Phone
Telephone number of the contact
.PARAMETER Address
Physical address of the contact
.PARAMETER Group
The specific group as defined in Netbox.
.PARAMETER GroupID
The database ID of the group in Netbox
.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-NetboxContact
.NOTES
Additional information about the function.
#>
[CmdletBinding(DefaultParameterSetName = 'Query')]
param
(
[Parameter(ParameterSetName = 'Query',
Position = 0)]
[string]$Name,
[Parameter(ParameterSetName = 'ByID')]
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Query,
[Parameter(ParameterSetName = 'Query')]
[string]$Email,
[Parameter(ParameterSetName = 'Query')]
[string]$Title,
[Parameter(ParameterSetName = 'Query')]
[string]$Phone,
[Parameter(ParameterSetName = 'Query')]
[string]$Address,
[Parameter(ParameterSetName = 'Query')]
[string]$Group,
[Parameter(ParameterSetName = 'Query')]
[uint64]$GroupID,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Limit,
[Parameter(ParameterSetName = 'Query')]
[uint16]$Offset,
[switch]$Raw
)
switch ($PSCmdlet.ParameterSetName) {
'ById' {
foreach ($Contact_ID in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contacts', $Contact_ID))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id'
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
}
break
}
default {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contacts'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
break
}
}
}

View file

@ -0,0 +1,99 @@

function New-NetboxContact {
<#
.SYNOPSIS
Create a new contact in Netbox
.DESCRIPTION
Creates a new contact object in Netbox which can be linked to other objects
.PARAMETER Name
The contacts full name, e.g "Leroy Jenkins"
.PARAMETER Email
Email address of the contact
.PARAMETER Title
Job title or other title related to the contact
.PARAMETER Phone
Telephone number
.PARAMETER Address
Physical address, usually mailing address
.PARAMETER Description
Short description of the contact
.PARAMETER Comments
Detailed comments. Markdown supported.
.PARAMETER Link
URI related to the contact
.PARAMETER Custom_Fields
A description of the Custom_Fields parameter.
.PARAMETER Raw
A description of the Raw parameter.
.EXAMPLE
PS C:\> New-NetboxContact -Name 'Leroy Jenkins' -Email 'leroy.jenkins@example.com'
.NOTES
Additional information about the function.
#>
[CmdletBinding(ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[ValidateLength(1, 100)]
[string]$Name,
[Parameter(Mandatory = $true)]
[ValidateLength(0, 254)]
[string]$Email,
[ValidateLength(0, 100)]
[string]$Title,
[ValidateLength(0, 50)]
[string]$Phone,
[ValidateLength(0, 200)]
[string]$Address,
[ValidateLength(0, 200)]
[string]$Description,
[string]$Comments,
[ValidateLength(0, 200)]
[string]$Link,
[hashtable]$Custom_Fields,
[switch]$Raw
)
process {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contacts'))
$Method = 'POST'
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments
if ($PSCmdlet.ShouldProcess($Name, 'Create new contact')) {
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
}
}
}

View file

@ -0,0 +1,120 @@

function Set-NetboxContact {
<#
.SYNOPSIS
Update a contact in Netbox
.DESCRIPTION
Updates a contact object in Netbox which can be linked to other objects
.PARAMETER Id
A description of the Id parameter.
.PARAMETER Name
The contacts full name, e.g "Leroy Jenkins"
.PARAMETER Email
Email address of the contact
.PARAMETER Group
Database ID of assigned group
.PARAMETER Title
Job title or other title related to the contact
.PARAMETER Phone
Telephone number
.PARAMETER Address
Physical address, usually mailing address
.PARAMETER Description
Short description of the contact
.PARAMETER Comments
Detailed comments. Markdown supported.
.PARAMETER Link
URI related to the contact
.PARAMETER Custom_Fields
A description of the Custom_Fields parameter.
.PARAMETER Force
A description of the Force parameter.
.PARAMETER Raw
A description of the Raw parameter.
.EXAMPLE
PS C:\> Set-NetboxContact -Id 10 -Name 'Leroy Jenkins' -Email 'leroy.jenkins@example.com'
.NOTES
Additional information about the function.
#>
[CmdletBinding(ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint64[]]$Id,
[ValidateLength(1, 100)]
[string]$Name,
[ValidateLength(0, 254)]
[string]$Email,
[uint64]$Group,
[ValidateLength(0, 100)]
[string]$Title,
[ValidateLength(0, 50)]
[string]$Phone,
[ValidateLength(0, 200)]
[string]$Address,
[ValidateLength(0, 200)]
[string]$Description,
[string]$Comments,
[ValidateLength(0, 200)]
[string]$Link,
[hashtable]$Custom_Fields,
[switch]$Force,
[switch]$Raw
)
begin {
$Method = 'PATCH'
}
process {
foreach ($ContactId in $Id) {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contacts', $ContactId))
$URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id', 'Force'
$URI = BuildNewURI -Segments $URIComponents.Segments
$CurrentContact = Get-NetboxContact -Id $ContactId -ErrorAction Stop
if ($Force -or $PSCmdlet.ShouldProcess($CurrentContact.Name, 'Update contact')) {
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
}
}
}
}

View file

@ -1,36 +0,0 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2018 v5.5.152
Created on: 5/29/2018 1:45 PM
Created by: Ben Claussen
Organization: NEOnet
Filename: Tenancy.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>
#region GET commands
#endregion GET commands
#region SET commands
#endregion SET commands
#region ADD/NEW commands
#endregion ADD/NEW commands
#region REMOVE commands
#endregion REMOVE commands

View file

@ -1,17 +1,4 @@
<#
.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-NetboxTenant.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxTenant {
<#
.SYNOPSIS
@ -65,7 +52,7 @@ function Get-NetboxTenant {
[string]$Name,
[Parameter(ParameterSetName = 'ByID')]
[uint32[]]$Id,
[uint64[]]$Id,
[Parameter(ParameterSetName = 'Query')]
[string]$Query,
@ -77,7 +64,7 @@ function Get-NetboxTenant {
[string]$Group,
[Parameter(ParameterSetName = 'Query')]
[uint16]$GroupID,
[uint64]$GroupID,
[Parameter(ParameterSetName = 'Query')]
[hashtable]$CustomFields,

View file

@ -0,0 +1,71 @@

function New-NetboxTenant {
<#
.SYNOPSIS
Create a new tenant in Netbox
.DESCRIPTION
Creates a new tenant object in Netbox
.PARAMETER Name
The tenant name, e.g "Contoso Inc"
.PARAMETER Slug
The unique URL for the tenant. Can only contain hypens, A-Z, a-z, 0-9, and underscores
.PARAMETER Description
Short description of the tenant
.PARAMETER Custom_Fields
Hashtable of custom field values.
.PARAMETER Raw
Return the unparsed data from the HTTP request
.EXAMPLE
PS C:\> New-NetboxTenant -Name 'Contoso Inc' -Slug 'contoso-inc'
.NOTES
Additional information about the function.
#>
[CmdletBinding(ConfirmImpact = 'Low',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[ValidateLength(1, 100)]
[string]$Name,
[Parameter(Mandatory = $true)]
[ValidateLength(1, 100)]
[ValidatePattern('^[-a-zA-Z0-9_]+$')]
[string]$Slug,
[ValidateLength(0, 200)]
[string]$Description,
[hashtable]$Custom_Fields,
[switch]$Raw
)
process {
$Segments = [System.Collections.ArrayList]::new(@('tenancy', 'tenants'))
$Method = 'POST'
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments
if ($PSCmdlet.ShouldProcess($Address, 'Create new tenant')) {
InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw
}
}
}

View file

@ -1,19 +1,6 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 12:44
Created by: Claussen
Organization: NEOnet
Filename: Get-NetboxVirtualMachine.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxVirtualMachine {
<#
<#
.SYNOPSIS
Obtains virtual machines from Netbox.
@ -104,35 +91,35 @@ function Get-NetboxVirtualMachine {
[string]$Name,
[uint16[]]$Id,
[uint64[]]$Id,
[object]$Status,
[string]$Tenant,
[uint16]$Tenant_ID,
[uint64]$Tenant_ID,
[string]$Platform,
[uint16]$Platform_ID,
[uint64]$Platform_ID,
[string]$Cluster_Group,
[uint16]$Cluster_Group_Id,
[uint64]$Cluster_Group_Id,
[string]$Cluster_Type,
[uint16]$Cluster_Type_Id,
[uint64]$Cluster_Type_Id,
[uint16]$Cluster_Id,
[uint64]$Cluster_Id,
[string]$Site,
[uint16]$Site_Id,
[uint64]$Site_Id,
[string]$Role,
[uint16]$Role_Id,
[uint64]$Role_Id,
[uint16]$Limit,
@ -141,15 +128,17 @@ function Get-NetboxVirtualMachine {
[switch]$Raw
)
if ($null -ne $Status) {
$PSBoundParameters.Status = ValidateVirtualizationChoice -ProvidedValue $Status -VirtualMachineStatus
process {
if ($null -ne $Status) {
$PSBoundParameters.Status = ValidateVirtualizationChoice -ProvidedValue $Status -VirtualMachineStatus
}
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'virtual-machines'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
}
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'virtual-machines'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
}

View file

@ -1,19 +1,7 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 12:44
Created by: Claussen
Organization: NEOnet
Filename: New-NetboxVirtualMachine.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function New-NetboxVirtualMachine {
[CmdletBinding()]
[CmdletBinding(ConfirmImpact = 'low',
SupportsShouldProcess = $true)]
[OutputType([pscustomobject])]
param
(
@ -21,47 +9,55 @@ function New-NetboxVirtualMachine {
[string]$Name,
[Parameter(Mandatory = $true)]
[uint16]$Cluster,
[uint64]$Site,
[uint16]$Tenant,
[uint64]$Cluster,
[uint64]$Tenant,
[object]$Status = 'Active',
[uint16]$Role,
[uint64]$Role,
[uint16]$Platform,
[uint64]$Platform,
[uint16]$vCPUs,
[uint16]$Memory,
[uint64]$Memory,
[uint16]$Disk,
[uint64]$Disk,
[uint16]$Primary_IP4,
[uint64]$Primary_IP4,
[uint16]$Primary_IP6,
[uint64]$Primary_IP6,
[hashtable]$Custom_Fields,
[string]$Comments
)
# $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 ', '))
# }
#
# $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
if ($PSBoundParameters.ContainsKey('Cluster') -and (-not $PSBoundParameters.ContainsKey('Site'))) {
throw "You must specify a site ID with a cluster ID"
}
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'virtual-machines'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$URI = BuildNewURI -Segments $URIComponents.Segments
InvokeNetboxRequest -URI $URI -Method POST -Body $URIComponents.Parameters
if ($PSCmdlet.ShouldProcess($name, 'Create new Virtual Machine')) {
InvokeNetboxRequest -URI $URI -Method POST -Body $URIComponents.Parameters
}
}

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 12:45
Created by: Claussen
Organization: NEOnet
Filename: Remove-NetboxVirtualMachine.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Remove-NetboxVirtualMachine {
<#
.SYNOPSIS
@ -39,7 +26,7 @@ function Remove-NetboxVirtualMachine {
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint16[]]$Id,
[uint64[]]$Id,
[switch]$Force
)

View file

@ -1,47 +1,34 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 12:45
Created by: Claussen
Organization: NEOnet
Filename: Set-NetboxVirtualMachine.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Set-NetboxVirtualMachine {
[CmdletBinding(ConfirmImpact = 'Medium',
SupportsShouldProcess = $true)]
SupportsShouldProcess = $true)]
param
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint16]$Id,
ValueFromPipelineByPropertyName = $true)]
[uint64]$Id,
[string]$Name,
[uint16]$Role,
[uint64]$Role,
[uint16]$Cluster,
[uint64]$Cluster,
[object]$Status,
[uint16]$Platform,
[uint64]$Platform,
[uint16]$Primary_IP4,
[uint64]$Primary_IP4,
[uint16]$Primary_IP6,
[uint64]$Primary_IP6,
[byte]$VCPUs,
[uint16]$Memory,
[uint64]$Memory,
[uint16]$Disk,
[uint64]$Disk,
[uint16]$Tenant,
[uint64]$Tenant,
[string]$Comments,
@ -50,23 +37,25 @@ function Set-NetboxVirtualMachine {
[switch]$Force
)
# if ($null -ne $Status) {
# $PSBoundParameters.Status = ValidateVirtualizationChoice -ProvidedValue $Status -VirtualMachineStatus
# }
#
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'virtual-machines', $Id))
# if ($null -ne $Status) {
# $PSBoundParameters.Status = ValidateVirtualizationChoice -ProvidedValue $Status -VirtualMachineStatus
# }
Write-Verbose "Obtaining VM from ID $Id"
process {
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'virtual-machines', $Id))
#$CurrentVM = Get-NetboxVirtualMachine -Id $Id -ErrorAction Stop
Write-Verbose "Obtaining VM from ID $Id"
Write-Verbose "Finished obtaining VM"
#$CurrentVM = Get-NetboxVirtualMachine -Id $Id -ErrorAction Stop
if ($Force -or $pscmdlet.ShouldProcess($ID, "Set properties on VM ID")) {
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id', 'Force'
Write-Verbose "Finished obtaining VM"
$URI = BuildNewURI -Segments $URIComponents.Segments
if ($Force -or $pscmdlet.ShouldProcess($ID, "Set properties on VM ID")) {
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id', 'Force'
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method PATCH
$URI = BuildNewURI -Segments $URIComponents.Segments
InvokeNetboxRequest -URI $URI -Body $URIComponents.Parameters -Method PATCH
}
}
}

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 12:46
Created by: Claussen
Organization: NEOnet
Filename: Add-NetboxVirtualMachineInterface.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Add-NetboxVirtualMachineInterface {
[CmdletBinding()]
param
@ -20,7 +7,7 @@ function Add-NetboxVirtualMachineInterface {
[string]$Name,
[Parameter(Mandatory = $true)]
[uint16]$Virtual_Machine,
[uint64]$Virtual_Machine,
[boolean]$Enabled = $true,

View file

@ -1,19 +1,6 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 12:47
Created by: Claussen
Organization: NEOnet
Filename: Get-NetboxVirtualMachineInterface.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxVirtualMachineInterface {
<#
<#
.SYNOPSIS
Gets VM interfaces
@ -61,7 +48,7 @@ function Get-NetboxVirtualMachineInterface {
param
(
[Parameter(ValueFromPipeline = $true)]
[uint16]$Id,
[uint64]$Id,
[string]$Name,
@ -71,7 +58,7 @@ function Get-NetboxVirtualMachineInterface {
[uint16]$MTU,
[uint16]$Virtual_Machine_Id,
[uint64]$Virtual_Machine_Id,
[string]$Virtual_Machine,
@ -84,11 +71,13 @@ function Get-NetboxVirtualMachineInterface {
[switch]$Raw
)
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'interfaces'))
process {
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'interfaces'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
InvokeNetboxRequest -URI $uri -Raw:$Raw
}
}

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 12:47
Created by: Claussen
Organization: NEOnet
Filename: Set-NetboxVirtualMachineInterface.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Set-NetboxVirtualMachineInterface {
[CmdletBinding(ConfirmImpact = 'Medium',
SupportsShouldProcess = $true)]
@ -20,7 +7,7 @@ function Set-NetboxVirtualMachineInterface {
(
[Parameter(Mandatory = $true,
ValueFromPipelineByPropertyName = $true)]
[uint16[]]$Id,
[uint64[]]$Id,
[string]$Name,
@ -32,7 +19,7 @@ function Set-NetboxVirtualMachineInterface {
[boolean]$Enabled,
[uint16]$Virtual_Machine,
[uint64]$Virtual_Machine,
[switch]$Force
)

View file

@ -1,17 +1,4 @@
<#
.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-NetboxVirtualizationCluster.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxVirtualizationCluster {
<#
.SYNOPSIS
@ -71,19 +58,19 @@ function Get-NetboxVirtualizationCluster {
[Alias('q')]
[string]$Query,
[uint16[]]$Id,
[uint64[]]$Id,
[string]$Group,
[uint16]$Group_Id,
[uint64]$Group_Id,
[string]$Type,
[uint16]$Type_Id,
[uint64]$Type_Id,
[string]$Site,
[uint16]$Site_Id,
[uint64]$Site_Id,
[uint16]$Limit,

View file

@ -1,17 +1,4 @@
<#
.NOTES
===========================================================================
Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172
Created on: 3/19/2020 14:11
Created by: Claussen
Organization: NEOnet
Filename: Get-NetboxVirtualizationClusterGroup.ps1
===========================================================================
.DESCRIPTION
A description of the file.
#>

function Get-NetboxVirtualizationClusterGroup {
[CmdletBinding()]
param
@ -24,7 +11,7 @@ function Get-NetboxVirtualizationClusterGroup {
[string]$Query,
[uint32[]]$Id,
[uint64[]]$Id,
[uint16]$Limit,

Some files were not shown because too many files have changed in this diff Show more