modules/deploy/dsc/ext/PsGallery/xSharePoint.0.10.0.0/DSCResources/MSFT_xSPSearchTopology/MSFT_xSPSearchTopology.schema.mof

/*
**Description**

This resource is responsible for provisioning a search topology in to the current farm.
It allows the configuration to dictate the search topology roles that the current server should be running.
Any combination of roles can be specified and the topology will be upaded to reflect the current servers new roles.
If this is the first server to apply topology to a farm, then at least one search index must be provided.
To this end, the FirstPartitionIndex, FirstPartitionDirectory and FirstPartitionServers allow configuring where the first index partition will belong.
This will behave the same as the xSPSearchIndexPartition resource.

Note that for the search topology to apply correctly, the path specified for FirstPartitionDirectory needs to exist on the server that is executing this resource.
For example, if the below example was executed on "Server1" it would also need to ensure that it was able to create the index path at I:\.
If no disk labeled I: was available on server1, this would fail, even though it will not hold an actual index component.

**Example**

    xSPSearchRoles LocalSearchRoles
    {
        ServiceAppName = "Search Service Application"
        Admin = @("Server1","Server2")
        Crawler = @("Server1","Server2")
        ContentProcessing = @("Server1","Server2")
        AnalyticsProcessing = @("Server1","Server2")
        QueryProcessing = @("Server3","Server4")
        PsDscRunAsCredential = $SPSetupAccount
        FirstPartitionDirectory = "I:\SearchIndexes\0"
        IndexPartition = @("Server3","Server4")
    }
*/
[ClassVersion("1.0.0.0"), FriendlyName("xSPSearchTopology")]
class MSFT_xSPSearchTopology : OMI_BaseResource
{
    [Key] String ServiceAppName;
    [Required] String Admin[];
    [Required] String Crawler[];
    [Required] String ContentProcessing[];
    [Required] String AnalyticsProcessing[];
    [Required] String QueryProcessing[];
    [Required] String IndexPartition[];
    [Required] String FirstPartitionDirectory;
    [Write, EmbeddedInstance("MSFT_Credential")] String InstallAccount;
};