From b720c03851db5ccbc92622f9d43b6a2e0b680295 Mon Sep 17 00:00:00 2001 From: Ben Claussen Date: Wed, 15 Feb 2023 15:49:49 -0500 Subject: [PATCH] Add New-NetboxTenant function --- .../Tenancy/Tenants/New-NetboxTenant.ps1 | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Functions/Tenancy/Tenants/New-NetboxTenant.ps1 diff --git a/Functions/Tenancy/Tenants/New-NetboxTenant.ps1 b/Functions/Tenancy/Tenants/New-NetboxTenant.ps1 new file mode 100644 index 0000000..6f7da0f --- /dev/null +++ b/Functions/Tenancy/Tenants/New-NetboxTenant.ps1 @@ -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 + } + } +} + + + +