Functions/Create/New-SOCatStore.psm1

#region: New-SOCatStore
<#
    .Synopsis
    Create a single StoreOnce Catalyst store on your StoreOnce system.
 
    .Description
    Create a single StoreOnce Catalyst store on a given Service Set on your StoreOnce system.
     
    .Parameter D2DIP
    IP Address of your StoreOnce system.
 
    .Parameter SSID
    Target Service Set for the new Store on your StoreOnce system.
 
    .Parameter SOCatStoreName
    Name for the new Store on your StoreOnce system.
 
    .Parameter SOCatStoreDesc
    Description for the new Store on your StoreOnce system.
 
    .Parameter Timeout
    Timeout for the Store creation process (Default is 30 Seconds).
 
    .Example
    New-SOCatStore -D2DIP 192.168.2.1 -SSID 1 -SOCatStoreName MyNewStore
 
#Requires PS -Version 4.0
#>

function New-SOCatStore {
    [CmdletBinding()]
    param (
        [parameter(Mandatory=$true, Position=0)]
            [String]$D2DIP,
        [parameter(Mandatory=$true, Position=1)]
            [String]$SSID,
        [parameter(Mandatory=$true, Position=2)]
            [String]$SOCatStoreName,
        [parameter(Mandatory=$false, Position=3)]
            [String]$SOCatStoreDesc = $SOCatStoreName,
        [parameter(Mandatory=$false, Position=4)]
            [Int]$Timeout = 30
            
    )
    Process {
        if ($SOCred -eq $null) {Write-Error "No System Credential Set! Use 'Set-SOCredentials'." -Category ConnectionError; Return}

        if (Test-IP -IP $D2DIP) {
            if (Get-SOCatStores -D2DIPs $D2DIP | where {$_.Name -eq $SOCatStoreName}) {Write-Error "Store $SOCatStoreName already Exists."; Return}
            $StoreCall = @{uri = "https://$D2DIP/storeonceservices/cluster/servicesets/$SSID/services/cat/stores/";
                            Method = 'POST';
                            Headers = @{Authorization = 'Basic ' + $SOCred;
                                        Accept = 'text/xml';
                                        'Content-Type' = 'application/x-www-form-urlencoded'
                            }
                            Body = @{name = $SOCatStoreName;
                                    description = $SOCatStoreDesc;
                                    primaryTransferPolicy = '0';
                                    secondaryTransferPolicy = '1';
                                    userDataSizeLimitBytes = '0';
                                    dedupedDataSizeOnDiskLimitBytes = '0';
                                    dataJobRetentionDays = '90';
                                    inboundCopyJobRetentionDays = '90';
                                    outboundCopyJobRetentionDays = '90';
                                    encryption = 'false'
                            } 
                        } 
            
            $StoreResponse = Invoke-RestMethod @StoreCall
            
            $i = 0
            while(!(Get-SOCatStores -D2DIPs $D2DIP | where {$_.Name -eq $SOCatStoreName -and $_.Status -eq "Online"})){
                $i++
                Start-Sleep 1
            if($i -gt $Timeout) { Write-Error "Creating Store Failed."; break}
                Write-Progress -Activity "Creating Store" -Status "Wait for Store become Online..."
            }
        }

        Return (Get-SOCatStores -D2DIPs $D2DIP | where {$_.Name -eq $SOCatStoreName} | ft * -AutoSize)
    }
}
#endregion