Private/TenantUtil.ps1
$global:NameDelimiter = " " function Get-ServiceNameFromTenant($Tenant) { return $TenantPrefix + $Tenant } function Get-ServiceDisplayNameFromTenant($Tenant) { return $TenantPrefix + $NameDelimiter + $Tenant } function Get-ServicePath { return "$env:ProgramFiles\$TenantPrefix" } function Get-WebAppNameFromTenant($Tenant) { return $TenantPrefix + $Tenant } function Get-SiteNameFromTenant($Tenant) { return $TenantPrefix + $NameDelimiter + $Tenant + " Site" } function Get-PoolNameFromTenant($Tenant) { return $TenantPrefix + $NameDelimiter + $Tenant + " Pool" } function Get-DatabaseNameFromTenant($Tenant) { return $TenantPrefix + $Tenant } function Get-ServerPathFromTenant($Tenant) { $servicePath = Get-ServicePath return "$servicePath\$Tenant" } function Get-TenantsPath { return "$env:ProgramData\$TenantPrefix\Tenants\" } function Get-NavPathFromTenant($Tenant) { return "$env:ProgramData\$TenantPrefix\$Tenant\Config\Adapter\" } function Get-LocalStorePathFromTenant($Tenant) { return "$env:ProgramData\$TenantPrefix\$Tenant\" } function Register-Tenant($Tenant, $RemotingPort, $WebServicePort) { $serverPath = ServerPathFromTenant $Tenant $serviceName = Get-ServiceNameFromTenant $Tenant $webApp = Get-WebAppNameFromTenant $Tenant $tenantInfo = @{ Role = $Tenant; Path = $serverPath; WebApplicationName = $webApp; RemotingPort = $RemotingPort; WebServicePort = $WebServicePort; WindowsServiceName = $serviceName; } $data = $tenantInfo | ConvertTo-Json $storePath = Get-TenantsPath if (!(Test-Path $storePath)) { mkdir $storePath } $storePath = $storePath + $Tenant + ".json" [System.IO.File]::WriteAllText($storePath, $data) Write-Verbose "Tenant registered in $storePath" } function Remove-Tenant($Tenant, [switch]$RemoveData) { $storePath = Get-TenantsPath $storePath = $storePath + $Tenant + ".json" Write-Verbose "Removing tenant configuration $storePath" remove-item $storePath $dataPath = Get-LocalStorePathFromTenant $Tenant if ($RemoveData.IsPresent) { Write-Verbose "Removing data stored in $dataPath ..." Remove-Item $dataPath -Recurse -Force } else { Write-Verbose "Keeping data stored in $dataPath" } } function Get-TenantList() { $path = Get-TenantsPath Get-ChildItem $path -Filter *.json | format-table -property @{n="Tenant";e={$_.basename}} } function Get-TenantInfo($Tenant) { $storePath = Get-TenantsPath $path = $storePath + $Tenant + ".json" Write-Verbose "Reading $path" if ([System.IO.File]::Exists($path)) { $json = [system.IO.File]::ReadAllText($path) $tenant = $json | ConvertFrom-Json Write-Output $tenant } else { Write-Output "Tenant $Tenant does not exist" } } |