Functions/BloxOne/BloxOnePlatform/New-B1Service.ps1
function New-B1Service { <# .SYNOPSIS Creates a new BloxOneDDI Service .DESCRIPTION This function is used to create a new BloxOneDDI Service .PARAMETER Name The name of the new BloxOneDDI Service .PARAMETER Type The type of service to deploy .PARAMETER Description The description of the new BloxOneDDI Service .PARAMETER B1Host The name of the BloxOne DDI Host to create the service on .PARAMETER Strict Use strict filter matching. By default, filters are searched using wildcards where possible. Using strict matching will only return results matching exactly what is entered in the applicable parameters. .PARAMETER Force Perform the operation without prompting for confirmation. By default, this function will not prompt for confirmation unless $ConfirmPreference is set to Medium. .EXAMPLE ## Create a DNS Service PS> New-B1Service -Type dns -Name "dns_bloxoneddihost1.mydomain.corp" -B1Host "bloxoneddihost1.mydomain.corp" .EXAMPLE ## Create a DHCP Service PS> New-B1Service -Type dhcp -Name "dhcp_bloxoneddihost1.mydomain.corp" -B1Host "bloxoneddihost1.mydomain.corp" .FUNCTIONALITY BloxOneDDI .FUNCTIONALITY Service #> [CmdletBinding( DefaultParameterSetName="default", SupportsShouldProcess, ConfirmImpact = 'Medium' )] param ( [Parameter(Mandatory=$true)] [String]$Name, [Parameter(Mandatory=$true)] [String]$Type, [Alias('OnPremHost')] [Parameter(Mandatory=$true)] [String]$B1Host, [Parameter(Mandatory=$false)] [String]$Description = "", [Parameter(Mandatory=$false)] [Switch]$Strict, [Switch]$Force ) $ConfirmPreference = Confirm-ShouldProcess $PSBoundParameters $B1HostInfo = Get-B1Host -Name $B1Host -Detailed if ($B1HostInfo) { if ($B1HostInfo.count -gt 1) { Write-Host "Too many hosts returned. Please check the -name parameter, or use -Strict for strict parameter checking." -ForegroundColor Red $B1HostInfo | Format-Table -AutoSize } else { if (Get-B1Service -Name $Name -Strict) { Write-Host "Service $Name already exists" -ForegroundColor Yellow } else { $JSON = @{ "name" = $Name "description" = $Description "service_type" = $Type "desired_state" = "start" "pool_id" = $($B1HostInfo.pool.pool_id) "tags" = @{} "interface_labels" = @() "destinations" = @() "source_interfaces" = @() } | ConvertTo-Json -Depth 3 if($PSCmdlet.ShouldProcess("Create new BloxOne $($Type.ToUpper()) Service:`n$($JSON)","Create new BloxOne $($Type.ToUpper()) Service: $($Name)",$MyInvocation.MyCommand)){ $NewServiceResult = Invoke-CSP -Method POST -Uri "$(Get-B1CSPUrl)/api/infra/v1/services" -Data $JSON | Select-Object -ExpandProperty result -ErrorAction SilentlyContinue if ($NewServiceResult.id) { Write-Host "$($Type.ToUpper()) service created successfully on $($B1HostInfo.display_name)" -ForegroundColor Green if ($Type -eq "ntp") { Set-B1NTPServiceConfiguration -Name $Name -UseGlobalNTPConfig } } else { Write-Host "Failed to create $($Type.ToUpper()) service on $($B1HostInfo.display_name)" -ForegroundColor Red } } } } } } |