Windows Azure SQL Database Cloud Service Discovery Data Provider

Microsoft.SqlServer.Azure.Module.ServerDiscoveryDataSource (DataSourceModuleType)

This module discovers Watcher Node and Windows Azure SQL Database Cloud Service instance specified in the template configuration.

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityPublic
RunAsMicrosoft.SqlServer.Azure.Profile.Workflow
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.TimedPowerShell.DiscoveryProvider Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
IntervalSecondsint$Config/IntervalSeconds$Interval (sec)

Source Code:

<DataSourceModuleType ID="Microsoft.SqlServer.Azure.Module.ServerDiscoveryDataSource" Accessibility="Public" RunAs="Microsoft.SqlServer.Azure.Profile.Workflow">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="IntervalSeconds" type="xsd:integer"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="TemplateName" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ServerClassId" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="RelationshipClassId" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="WatcherNodeComputerName" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ServerName" type="xsd:string"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<SyncTime/>
<ScriptName>InitialDiscoveryDataSource.ps1</ScriptName>
<ScriptBody><Script>Param ($TemplateName, $ServerClassId, $RelationshipClassId, $WatcherNodeComputerName, $ServerName)

$scriptApi = new-object -comObject "MOM.ScriptAPI"

try {
$discoveryData = $scriptApi.CreateDiscoveryData(0, "$MPElement$", "$Target/Id$")

$healthService = $discoveryData.CreateClassInstance("$MPElement[Name="SC!Microsoft.SystemCenter.HealthService"]$")
$healthService.AddProperty("$MPElement[Name="Windows!Microsoft.Windows.Computer"]/PrincipalName$", $WatcherNodeComputerName)

$watcherNode = $discoveryData.CreateClassInstance("$MPElement[Name="Microsoft.SqlServer.Azure.WatcherNode"]$")
$watcherNode.AddProperty("$MPElement[Name="Windows!Microsoft.Windows.Computer"]/PrincipalName$", $WatcherNodeComputerName)
$watcherNode.AddProperty("$MPElement[Name="System!System.Entity"]/DisplayName$", "Windows Azure SQL Database Watcher Node ($WatcherNodeComputerName)")
$discoveryData.AddInstance($watcherNode)

$server = $discoveryData.CreateClassInstance("$ServerClassId")
$server.AddProperty("$MPElement[Name="Microsoft.SqlServer.Azure.Server"]/ServerName$", $ServerName)
$server.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", $TemplateName)
$discoveryData.AddInstance($server)

$relationship = $discoveryData.CreateRelationshipInstance("$MPElement[Name="SC!Microsoft.SystemCenter.HealthServiceShouldManageEntity"]$")
$relationship.Source = $healthService
$relationship.Target = $server
$discoveryData.AddInstance($relationship)

$relationship = $discoveryData.CreateRelationshipInstance("$RelationshipClassId")
$relationship.Source = $watcherNode
$relationship.Target = $server
$discoveryData.AddInstance($relationship)

$discoveryData
} catch {
LogMessage 'Initial Discovery' 1 $_
$discoveryData = $scriptApi.CreateDiscoveryData(0, "$MPElement$", "$Target/Id$")
$discoveryData.IsSnapshot = $false
$discoveryData
}</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>TemplateName</Name>
<Value>$Config/TemplateName$</Value>
</Parameter>
<Parameter>
<Name>ServerClassId</Name>
<Value>$Config/ServerClassId$</Value>
</Parameter>
<Parameter>
<Name>RelationshipClassId</Name>
<Value>$Config/RelationshipClassId$</Value>
</Parameter>
<Parameter>
<Name>WatcherNodeComputerName</Name>
<Value>$Config/WatcherNodeComputerName$</Value>
</Parameter>
<Parameter>
<Name>ServerName</Name>
<Value>$Config/ServerName$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>120</TimeoutSeconds>
</DataSource>
</MemberModules>
<Composition>
<Node ID="DS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>