Containers/New-NavContainer2.ps1
function New-NavContainer2 { Param( [Parameter(Mandatory=$true)] [string]$ContainerName, [Parameter(Mandatory=$false)] [string]$ImageName, [Parameter(Mandatory=$false)] [PSCredential]$Credential, # Swtich to include CSide [Parameter(Mandatory=$false)] [switch] $includeCSide, # Optional additional parameters to use when creating the docker container [Parameter(Mandatory=$false)] [string[]] $AdditionalParams, [Parameter(Mandatory=$false)] [ValidateSet('Sandbox','OnPrem')] [string]$ContainerType = 'Sandbox', [Parameter(Mandatory=$false)] [string]$Version, [Parameter(Mandatory=$false)] [string]$Country = 'w1', [Parameter(Mandatory=$false)] [ValidateSet('bcartifacts','bcinsider')] [string]$StorageAccount = 'bcartifacts', [Parameter(Mandatory=$false)] [switch]$SecondToLastMajor, [Parameter(Mandatory=$false)] [string] $memoryLimit ) if ($null -eq $Credential) { $NewCredential = New-CredentialFromEnvironmentJson if ($NewCredential -eq $false) { $Credential = [PSCredential]::new('admin', (ConvertTo-SecureString 'P@ssword1' -AsPlainText -Force)) } else { $Credential = $NewCredential } } $Params = @{ containerName = $ContainerName auth = 'NavUserPassword' restart = 'no' shortcuts = 'None' } if (($null -eq $ImageName) -or ($null -ne $ContainerType)) { $ArtifactParams = @{ ContainerType = $ContainerType StorageAccount = $StorageAccount Country = $Country } if ($null -ne $Version) { $ArtifactParams.Add('Version', $Version) } if ($SecondToLastMajor.IsPresent) { $ArtifactParams.Add('SecondToLastMajor', $true) } $ArtifactUrl = Get-ArtifactUrl @ArtifactParams Write-Host "Using artifact url $ArtifactUrl" $Params.Add('artifactUrl', $ArtifactUrl) } if ($ImageName.Contains('nav')) { $LicenceFile = (Get-TFSConfigKeyValue 'navLicenceFile') } else { if ($ArtifactUrl -ne "") { if ([Version] [Uri]::new($ArtifactUrl).AbsolutePath.Split('/')[2] -lt [Version]"22.0.0.0") { $LicenceFile = (Get-TFSConfigKeyValue 'businessCentralLicenceFile') } } } if([string]::IsNullOrEmpty($LicenceFile)) { $Params.Add('licenseFile', (Get-TFSConfigKeyValue 'bcLicenceFile')) } else { $Params.Add('licenseFile', $LicenceFile) } if ($null -ne $AdditionalParams) { $Params.Add('additionalParameters', $AdditionalParams) } if ($null -ne $ImageName) { $Params.Add('imageName', $ImageName) } if([string]::IsNullOrEmpty($memoryLimit)) { $memoryLimit = (Get-TFSConfigKeyValue 'containerMemoryLimit') } New-NavContainer @Params ` -accept_eula ` -accept_outdated ` -accept_insiderEula ` -Credential $Credential ` -doNotExportObjectsToText ` -includeCSide:$includeCSide ` -updateHosts ` -alwaysPull ` -includeTestToolkit ` -includeTestLibrariesOnly ` -enableTaskScheduler:$false ` -isolation (Get-ContainerIsolation) ` -memoryLimit $memoryLimit ` -assignPremiumPlan } Export-ModuleMember -Function New-NavContainer2 |