Public/DataSources/New-R1DataSource.ps1
|
# .ExternalHelp psRadiantOne-help.xml function New-R1DataSource { [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Medium', DefaultParameterSetName = 'Ldap')] [OutputType([void])] param( [parameter( Mandatory = $true, ValueFromPipelineByPropertyName = $true )] [ValidateNotNullOrEmpty()] [string]$name, [parameter( Mandatory = $true, ValueFromPipelineByPropertyName = $true )] [ValidateNotNullOrEmpty()] [string]$type, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true )] [bool]$active, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true )] [string]$description, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true )] [string]$defaultSchema, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true )] [string[]]$addedSchemas, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true )] [string]$groupId, #--------------------------------------------------------------------------------- ldap [parameter( Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Ldap' )] [ValidateNotNullOrEmpty()] [Alias('host')] [string]$hostName, [parameter( Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Ldap' )] [int]$port, [parameter( Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Ldap' )] [ValidateNotNullOrEmpty()] [string]$bindDn, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Ldap' )] [bool]$ssl, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Ldap' )] [string]$baseDn, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Ldap' )] [bool]$pagedResultsControl, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Ldap' )] [ValidateRange(0, 100000)] [int]$pageSize, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Ldap' )] [bool]$chaseReferrals, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Ldap' )] [object[]]$failovers, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Ldap' )] [bool]$verifySslHostname, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Ldap' )] [string]$kerberosProfile, #----------------------------------------------------------------------------- database [parameter( Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Database' )] [ValidateNotNullOrEmpty()] [string]$driverClassName, [parameter( Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Database' )] [ValidateNotNullOrEmpty()] [string]$url, [parameter( Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Database' )] [ValidateNotNullOrEmpty()] [string]$username, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Database' )] [string]$failOverName, #------------------------------------------------------------------------------- custom [parameter( Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Custom' )] [ValidateNotNull()] [hashtable]$customProps, #------------------------------------------------------------------ database and custom [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Database' )] [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Custom' )] [string]$onPremHost, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Database' )] [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Custom' )] [int]$onPremPort, #-------------------------------------------------------------------- ldap and database [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Ldap' )] [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Database' )] [securestring]$password ) Begin { Assert-R1Session -RequireToken }#begin Process { $URI = Resolve-R1ServiceUrl -Service Catalog -Path 'data_sources' $Request = $PSBoundParameters | Get-Parameter -ParametersToRemove password #category is the discriminator the API uses to choose the data source shape $Request['category'] = $PSCmdlet.ParameterSetName.ToLowerInvariant() #host is an automatic variable, so the parameter is hostName and the key is renamed here if ($Request.Contains('hostName')) { $Request['host'] = $Request['hostName'] $null = $Request.Remove('hostName') } foreach ($Collection in 'addedSchemas', 'failovers') { if ($Request.Contains($Collection)) { $Request[$Collection] = @($Request[$Collection]) } } if ($PSBoundParameters.ContainsKey('password')) { $Request['password'] = $password | ConvertTo-InsecureString } $Body = $Request | ConvertTo-R1SecretBody if ($PSCmdlet.ShouldProcess($name, "Create $($PSCmdlet.ParameterSetName) Data Source")) { $null = Invoke-R1RestMethod -Uri $URI -Method POST -Body $Body } }#process End { }#end } |